{"adoption": {"forks": 1519, "observed_at": "2026-08-28T04:07:46.054721+00:00", "stars": 3149}, "canonical_url": "https://ross.abutalabs.com/products/spark-operator", "card": {"archived": false, "artifact_type": "infra-config", "description": "Kubernetes operator for managing the lifecycle of Apache Spark applications on Kubernetes. ", "domain": ["big-data", "cloud-computing"], "enriched": true, "function": ["container-orchestration", "deployment", "workflow-automation", "scheduling"], "health_score": 100, "homepage": "https://spark.kubeflow.org/en/latest/", "language": "Python", "license": "Apache-2.0", "license_family": "permissive", "maturity": "active", "member_repos": ["kubeflow/spark-operator"], "name": "kubeflow/spark-operator", "platform": ["cloud", "go", "python"], "pushed_at": "2026-08-26T02:42:08+00:00", "repo": "kubeflow/spark-operator", "stars": 3149, "tags": ["kubernetes-operator", "apache-spark", "crd", "helm-chart", "spark-applications", "dataproc", "data-engineering", "containers", "devops", "kubernetes", "docker"], "topics": ["kubernetes", "kubernetes-operator", "apache-spark", "kubernetes-crd", "kubernetes-controller", "spark", "google-cloud-dataproc"], "urls": [], "use_cases": ["run spark jobs on kubernetes", "manage spark application lifecycle with a kubernetes operator", "deploy sparkapplication crd via helm", "schedule batch spark workloads in a k8s cluster", "monitor spark job status with kubectl", "migrate spark workloads from dataproc to kubernetes"], "what_it_is": "A Kubernetes operator that manages the full lifecycle of Apache Spark applications using custom resources (SparkApplication CRDs). It lets you declare, run, and monitor Spark jobs on Kubernetes just like any other native workload.", "when_to_avoid": ["you run Spark on dedicated clusters or managed services like Databricks or EMR instead of Kubernetes", "you need a lightweight way to submit one-off Spark jobs without a controller installed", "your cluster cannot run the operator's RBAC and CRDs"], "when_to_choose": ["you already run workloads on Kubernetes and want Spark jobs managed declaratively with CRDs", "you need automated retries, status reporting, and lifecycle management for Spark applications", "you want to install via Helm or Kustomize into an existing cluster"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/spark-operator", "repo": "kubeflow/spark-operator", "role": "main", "score": 94}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:07:46.054721+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T07:25:55.443954+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ad66127db9a86a7c6d2d5f024ef1a31d9bd832114d0d0fa6845625c168d7bfa9", "fetched_at": "2026-08-28T04:07:46.054721+00:00", "kind": "readme", "missing": false, "url": "https://github.com/kubeflow/spark-operator"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:07:46.054721+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T07:25:55.443954+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ad66127db9a86a7c6d2d5f024ef1a31d9bd832114d0d0fa6845625c168d7bfa9", "fetched_at": "2026-08-28T04:07:46.054721+00:00", "kind": "readme", "missing": false, "url": "https://github.com/kubeflow/spark-operator"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T07:25:55.443954+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ad66127db9a86a7c6d2d5f024ef1a31d9bd832114d0d0fa6845625c168d7bfa9", "fetched_at": "2026-08-28T04:07:46.054721+00:00", "kind": "readme", "missing": false, "url": "https://github.com/kubeflow/spark-operator"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:07:46.054721+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:07:46.054721+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:07:46.054721+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T07:25:55.443954+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ad66127db9a86a7c6d2d5f024ef1a31d9bd832114d0d0fa6845625c168d7bfa9", "fetched_at": "2026-08-28T04:07:46.054721+00:00", "kind": "readme", "missing": false, "url": "https://github.com/kubeflow/spark-operator"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:07:46.054721+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:07:46.054721+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T07:25:55.443954+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ad66127db9a86a7c6d2d5f024ef1a31d9bd832114d0d0fa6845625c168d7bfa9", "fetched_at": "2026-08-28T04:07:46.054721+00:00", "kind": "readme", "missing": false, "url": "https://github.com/kubeflow/spark-operator"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:07:46.054721+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:07:46.054721+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:07:46.054721+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T07:25:55.443954+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ad66127db9a86a7c6d2d5f024ef1a31d9bd832114d0d0fa6845625c168d7bfa9", "fetched_at": "2026-08-28T04:07:46.054721+00:00", "kind": "readme", "missing": false, "url": "https://github.com/kubeflow/spark-operator"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:07:46.054721+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:07:46.054721+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T07:25:55.443954+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ad66127db9a86a7c6d2d5f024ef1a31d9bd832114d0d0fa6845625c168d7bfa9", "fetched_at": "2026-08-28T04:07:46.054721+00:00", "kind": "readme", "missing": false, "url": "https://github.com/kubeflow/spark-operator"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T07:25:55.443954+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ad66127db9a86a7c6d2d5f024ef1a31d9bd832114d0d0fa6845625c168d7bfa9", "fetched_at": "2026-08-28T04:07:46.054721+00:00", "kind": "readme", "missing": false, "url": "https://github.com/kubeflow/spark-operator"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T07:25:55.443954+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ad66127db9a86a7c6d2d5f024ef1a31d9bd832114d0d0fa6845625c168d7bfa9", "fetched_at": "2026-08-28T04:07:46.054721+00:00", "kind": "readme", "missing": false, "url": "https://github.com/kubeflow/spark-operator"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T07:25:55.443954+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ad66127db9a86a7c6d2d5f024ef1a31d9bd832114d0d0fa6845625c168d7bfa9", "fetched_at": "2026-08-28T04:07:46.054721+00:00", "kind": "readme", "missing": false, "url": "https://github.com/kubeflow/spark-operator"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 99, "longevity": 100, "rhythm": 83}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 3164, "days_push": 7, "days_rel": 33, "gap_med": 61, "n_releases_24m": 12}, "score": 94, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}