{"adoption": {"forks": 970, "observed_at": "2026-08-28T04:07:24.587320+00:00", "stars": 2836}, "canonical_url": "https://ross.abutalabs.com/products/spark-jobserver", "card": {"archived": false, "artifact_type": "service", "description": "REST job server for Apache Spark", "domain": ["big-data", "apis", "microservices"], "enriched": true, "function": ["http-server", "api-framework", "scheduling", "middleware"], "health_score": 62, "homepage": null, "language": "Scala", "license": "NOASSERTION", "license_family": "other", "maturity": "maintenance", "member_repos": ["spark-jobserver/spark-jobserver"], "name": "spark-jobserver/spark-jobserver", "platform": ["jvm", "self-hosted"], "pushed_at": "2026-03-03T12:09:21+00:00", "repo": "spark-jobserver/spark-jobserver", "stars": 2836, "tags": ["apache-spark", "job-scheduler", "rest-api", "spark-jobs", "job-management", "data-engineering", "web-server"], "topics": ["spark", "rest-api", "spark-jobserver", "scala"], "urls": [], "use_cases": ["submit spark jobs over a rest api", "manage shared spark contexts for related jobs", "run ad-hoc spark jobs without a cluster console", "upload and version spark job jars", "secure spark job submission with authentication and access control", "deploy spark jobs on yarn or mesos"], "what_it_is": "Spark Job Server is a RESTful service for submitting, managing, and monitoring Apache Spark jobs, jars, and job contexts. It supports persistent Spark contexts, named RDDs, authentication via Shiro or Keycloak, and deployment on YARN, Mesos, and EMR clusters.", "when_to_avoid": ["you only need to run occasional Spark jobs and can use spark-submit directly", "you use Spark's newer native REST APIs or a workflow orchestrator like Airflow for job scheduling", "your stack is not JVM/Scala-based and you cannot package jobs as jars"], "when_to_choose": ["you need a long-running service to submit and monitor Spark jobs via HTTP", "you want persistent Spark contexts shared across multiple jobs for faster startup", "you need job management features like named RDDs, access control, and SSL"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/spark-jobserver", "repo": "spark-jobserver/spark-jobserver", "role": "main", "score": 54}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:07:24.587320+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T07:37:46.963272+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "29ba099cdf2bbbb35e9efa0bb22d5dcd616dfe4cf4369d03557caae825a11440", "fetched_at": "2026-08-28T04:07:24.587320+00:00", "kind": "readme", "missing": false, "url": "https://github.com/spark-jobserver/spark-jobserver"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:07:24.587320+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T07:37:46.963272+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "29ba099cdf2bbbb35e9efa0bb22d5dcd616dfe4cf4369d03557caae825a11440", "fetched_at": "2026-08-28T04:07:24.587320+00:00", "kind": "readme", "missing": false, "url": "https://github.com/spark-jobserver/spark-jobserver"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T07:37:46.963272+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "29ba099cdf2bbbb35e9efa0bb22d5dcd616dfe4cf4369d03557caae825a11440", "fetched_at": "2026-08-28T04:07:24.587320+00:00", "kind": "readme", "missing": false, "url": "https://github.com/spark-jobserver/spark-jobserver"}], "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:24.587320+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:07:24.587320+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:07:24.587320+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T07:37:46.963272+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "29ba099cdf2bbbb35e9efa0bb22d5dcd616dfe4cf4369d03557caae825a11440", "fetched_at": "2026-08-28T04:07:24.587320+00:00", "kind": "readme", "missing": false, "url": "https://github.com/spark-jobserver/spark-jobserver"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:07:24.587320+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:07:24.587320+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T07:37:46.963272+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "29ba099cdf2bbbb35e9efa0bb22d5dcd616dfe4cf4369d03557caae825a11440", "fetched_at": "2026-08-28T04:07:24.587320+00:00", "kind": "readme", "missing": false, "url": "https://github.com/spark-jobserver/spark-jobserver"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:07:24.587320+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:07:24.587320+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:07:24.587320+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T07:37:46.963272+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "29ba099cdf2bbbb35e9efa0bb22d5dcd616dfe4cf4369d03557caae825a11440", "fetched_at": "2026-08-28T04:07:24.587320+00:00", "kind": "readme", "missing": false, "url": "https://github.com/spark-jobserver/spark-jobserver"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:07:24.587320+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:07:24.587320+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T07:37:46.963272+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "29ba099cdf2bbbb35e9efa0bb22d5dcd616dfe4cf4369d03557caae825a11440", "fetched_at": "2026-08-28T04:07:24.587320+00:00", "kind": "readme", "missing": false, "url": "https://github.com/spark-jobserver/spark-jobserver"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T07:37:46.963272+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "29ba099cdf2bbbb35e9efa0bb22d5dcd616dfe4cf4369d03557caae825a11440", "fetched_at": "2026-08-28T04:07:24.587320+00:00", "kind": "readme", "missing": false, "url": "https://github.com/spark-jobserver/spark-jobserver"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T07:37:46.963272+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "29ba099cdf2bbbb35e9efa0bb22d5dcd616dfe4cf4369d03557caae825a11440", "fetched_at": "2026-08-28T04:07:24.587320+00:00", "kind": "readme", "missing": false, "url": "https://github.com/spark-jobserver/spark-jobserver"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T07:37:46.963272+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "29ba099cdf2bbbb35e9efa0bb22d5dcd616dfe4cf4369d03557caae825a11440", "fetched_at": "2026-08-28T04:07:24.587320+00:00", "kind": "readme", "missing": false, "url": "https://github.com/spark-jobserver/spark-jobserver"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 70, "longevity": 100, "rhythm": 8}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": ["no_license"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 4395, "days_push": 183, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 54, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}