{"adoption": {"forks": 937, "observed_at": "2026-08-28T04:08:24.061361+00:00", "stars": 3845}, "canonical_url": "https://ross.abutalabs.com/products/tensorflowonspark", "card": {"archived": false, "artifact_type": "library", "description": "TensorFlowOnSpark brings TensorFlow programs to Apache Spark clusters.", "domain": ["machine-learning", "deep-learning", "big-data", "microservices"], "enriched": true, "function": ["machine-learning", "deep-learning", "llm-training"], "health_score": 20, "homepage": null, "language": "Python", "license": "Apache-2.0", "license_family": "permissive", "maturity": "maintenance", "member_repos": ["yahoo/TensorFlowOnSpark"], "name": "yahoo/TensorFlowOnSpark", "platform": ["python", "jvm", "cloud"], "pushed_at": "2023-07-10T10:34:11+00:00", "repo": "yahoo/TensorFlowOnSpark", "stars": 3845, "tags": ["tensorflow", "apache-spark", "hadoop", "distributed-training", "gpu", "hdfs", "linux", "docker"], "topics": ["tensorflow", "spark", "yahoo", "machine-learning", "cluster", "featured", "python", "scala"], "urls": [], "use_cases": ["run distributed TensorFlow training on a Spark cluster", "train deep learning models on data stored in HDFS", "migrate existing TensorFlow code to a shared Hadoop grid", "perform distributed inference across GPU and CPU servers", "integrate TensorFlow pipelines with Spark data processing", "scale deep learning workloads across a cluster of machines"], "what_it_is": "TensorFlowOnSpark is a Python library that lets existing TensorFlow programs run distributed training and inference on Apache Spark and Hadoop clusters with minimal code changes. It manages launching TensorFlow workers on Spark executors, data ingestion from HDFS or Spark RDDs, and cluster shutdown.", "when_to_avoid": ["you use modern orchestration like Kubernetes-native TensorFlow or PyTorch distributed", "your workloads are small enough for a single machine", "you need a project with frequent updates and active development", "you use frameworks other than TensorFlow"], "when_to_choose": ["you already run Spark/Hadoop clusters and want TensorFlow training on them", "you want to migrate existing TensorFlow programs to distributed execution with minimal changes", "your training data lives in HDFS or Spark RDDs", "you need GPU or CPU distributed training on cloud or on-premise clusters"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/tensorflowonspark", "repo": "yahoo/TensorFlowOnSpark", "role": "main", "score": 23}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:08:24.061361+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T18:26:02.045102+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "1109a31cbb5fb217864be6f49b66e45c1567cfa84fb7645293529aecee30cdd2", "fetched_at": "2026-08-28T04:08:24.061361+00:00", "kind": "readme", "missing": false, "url": "https://github.com/yahoo/TensorFlowOnSpark"}, {"content_hash": "6cd12721b9c22cd574a6cdf9bcce18c5d851d1d9050ba3e1f6d7b8e7e3cb8a2f", "fetched_at": "2026-08-29T09:20:47.825629+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/tensorflowonspark/json"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:08:24.061361+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T18:26:02.045102+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "1109a31cbb5fb217864be6f49b66e45c1567cfa84fb7645293529aecee30cdd2", "fetched_at": "2026-08-28T04:08:24.061361+00:00", "kind": "readme", "missing": false, "url": "https://github.com/yahoo/TensorFlowOnSpark"}, {"content_hash": "6cd12721b9c22cd574a6cdf9bcce18c5d851d1d9050ba3e1f6d7b8e7e3cb8a2f", "fetched_at": "2026-08-29T09:20:47.825629+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/tensorflowonspark/json"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T18:26:02.045102+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "1109a31cbb5fb217864be6f49b66e45c1567cfa84fb7645293529aecee30cdd2", "fetched_at": "2026-08-28T04:08:24.061361+00:00", "kind": "readme", "missing": false, "url": "https://github.com/yahoo/TensorFlowOnSpark"}, {"content_hash": "6cd12721b9c22cd574a6cdf9bcce18c5d851d1d9050ba3e1f6d7b8e7e3cb8a2f", "fetched_at": "2026-08-29T09:20:47.825629+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/tensorflowonspark/json"}], "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:08:24.061361+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:08:24.061361+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:08:24.061361+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T18:26:02.045102+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "1109a31cbb5fb217864be6f49b66e45c1567cfa84fb7645293529aecee30cdd2", "fetched_at": "2026-08-28T04:08:24.061361+00:00", "kind": "readme", "missing": false, "url": "https://github.com/yahoo/TensorFlowOnSpark"}, {"content_hash": "6cd12721b9c22cd574a6cdf9bcce18c5d851d1d9050ba3e1f6d7b8e7e3cb8a2f", "fetched_at": "2026-08-29T09:20:47.825629+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/tensorflowonspark/json"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:08:24.061361+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:08:24.061361+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T18:26:02.045102+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "1109a31cbb5fb217864be6f49b66e45c1567cfa84fb7645293529aecee30cdd2", "fetched_at": "2026-08-28T04:08:24.061361+00:00", "kind": "readme", "missing": false, "url": "https://github.com/yahoo/TensorFlowOnSpark"}, {"content_hash": "6cd12721b9c22cd574a6cdf9bcce18c5d851d1d9050ba3e1f6d7b8e7e3cb8a2f", "fetched_at": "2026-08-29T09:20:47.825629+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/tensorflowonspark/json"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:08:24.061361+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:08:24.061361+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:08:24.061361+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T18:26:02.045102+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "1109a31cbb5fb217864be6f49b66e45c1567cfa84fb7645293529aecee30cdd2", "fetched_at": "2026-08-28T04:08:24.061361+00:00", "kind": "readme", "missing": false, "url": "https://github.com/yahoo/TensorFlowOnSpark"}, {"content_hash": "6cd12721b9c22cd574a6cdf9bcce18c5d851d1d9050ba3e1f6d7b8e7e3cb8a2f", "fetched_at": "2026-08-29T09:20:47.825629+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/tensorflowonspark/json"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:08:24.061361+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:08:24.061361+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T18:26:02.045102+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "1109a31cbb5fb217864be6f49b66e45c1567cfa84fb7645293529aecee30cdd2", "fetched_at": "2026-08-28T04:08:24.061361+00:00", "kind": "readme", "missing": false, "url": "https://github.com/yahoo/TensorFlowOnSpark"}, {"content_hash": "6cd12721b9c22cd574a6cdf9bcce18c5d851d1d9050ba3e1f6d7b8e7e3cb8a2f", "fetched_at": "2026-08-29T09:20:47.825629+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/tensorflowonspark/json"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T18:26:02.045102+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "1109a31cbb5fb217864be6f49b66e45c1567cfa84fb7645293529aecee30cdd2", "fetched_at": "2026-08-28T04:08:24.061361+00:00", "kind": "readme", "missing": false, "url": "https://github.com/yahoo/TensorFlowOnSpark"}, {"content_hash": "6cd12721b9c22cd574a6cdf9bcce18c5d851d1d9050ba3e1f6d7b8e7e3cb8a2f", "fetched_at": "2026-08-29T09:20:47.825629+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/tensorflowonspark/json"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T18:26:02.045102+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "1109a31cbb5fb217864be6f49b66e45c1567cfa84fb7645293529aecee30cdd2", "fetched_at": "2026-08-28T04:08:24.061361+00:00", "kind": "readme", "missing": false, "url": "https://github.com/yahoo/TensorFlowOnSpark"}, {"content_hash": "6cd12721b9c22cd574a6cdf9bcce18c5d851d1d9050ba3e1f6d7b8e7e3cb8a2f", "fetched_at": "2026-08-29T09:20:47.825629+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/tensorflowonspark/json"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T18:26:02.045102+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "1109a31cbb5fb217864be6f49b66e45c1567cfa84fb7645293529aecee30cdd2", "fetched_at": "2026-08-28T04:08:24.061361+00:00", "kind": "readme", "missing": false, "url": "https://github.com/yahoo/TensorFlowOnSpark"}, {"content_hash": "6cd12721b9c22cd574a6cdf9bcce18c5d851d1d9050ba3e1f6d7b8e7e3cb8a2f", "fetched_at": "2026-08-29T09:20:47.825629+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/tensorflowonspark/json"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "longevity": 100, "rhythm": 8}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 3512, "days_push": 1150, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 23, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}