{"adoption": {"forks": 646, "observed_at": "2026-08-28T04:05:08.736269+00:00", "stars": 1592}, "canonical_url": "https://ross.abutalabs.com/products/gluten", "card": {"archived": false, "artifact_type": "plugin", "description": "Gluten is a middle layer responsible for offloading JVM-based SQL engines' execution to native engines.", "domain": ["big-data", "databases", "analytics", "performance"], "enriched": true, "function": ["database", "streaming", "developer-tools"], "health_score": 100, "homepage": "https://gluten.apache.org/", "language": "Scala", "license": "Apache-2.0", "license_family": "permissive", "maturity": "active", "member_repos": ["apache/gluten"], "name": "apache/gluten", "platform": ["jvm", "cloud"], "pushed_at": "2026-08-26T16:42:02+00:00", "repo": "apache/gluten", "stars": 1592, "tags": ["spark", "spark-sql", "velox", "clickhouse", "substrait", "vectorized-execution", "columnar", "jni", "native-execution", "query-acceleration", "simd", "apache-arrow", "scala", "data-engineering", "linux", "docker"], "topics": ["clickhouse", "simd", "spark-sql", "vectorization", "velox", "arrow"], "urls": [], "use_cases": ["accelerate spark sql queries without changing application code", "speed up etl pipelines running on spark", "offload jvm sql execution to native vectorized engines", "run tpc-h and tpc-ds benchmarks faster on spark", "switch between velox and clickhouse backends for spark workloads", "add columnar shuffle and columnar processing to spark", "reduce compute cost of petabyte-scale spark jobs"], "what_it_is": "Apache Gluten is a middle-layer plugin that offloads JVM-based SQL engine execution (primarily Spark SQL) to high-performance native engines like Velox and ClickHouse. It translates Spark physical plans into Substrait plans executed natively via JNI, delivering up to 3x+ speedups with zero changes to user queries or DataFrame code.", "when_to_avoid": ["you don't use a JVM-based SQL engine like Spark", "your queries rely heavily on operators unsupported by the native backends, causing frequent fallback", "you cannot enable off-heap memory or add Spark plugins in your environment", "you need a lightweight solution and can't tolerate the added operational complexity of native bundle JARs"], "when_to_choose": ["you run Spark SQL workloads and want major performance gains without rewriting queries", "your bottleneck is per-operator execution performance rather than query planning", "you want to leverage native engines like Velox or ClickHouse while keeping the Spark ecosystem", "you need automatic fallback to vanilla Spark for unsupported operators"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/gluten", "repo": "apache/gluten", "role": "main", "score": 91}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:05:08.736269+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T03:54:40.142081+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8ff508c8ec3d5d3df2167ddd8c542b01b417ece2a727e7df6d2d33af1f2630f7", "fetched_at": "2026-08-28T04:05:08.736269+00:00", "kind": "readme", "missing": false, "url": "https://github.com/apache/gluten"}, {"content_hash": "411c21b51d036e3360aba45b61c9ce59dd9a8a13967ccc73bedb30776410ae64", "fetched_at": "2026-08-29T11:25:08.245030+00:00", "kind": "homepage", "missing": false, "url": "https://gluten.apache.org/"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:05:08.736269+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T03:54:40.142081+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8ff508c8ec3d5d3df2167ddd8c542b01b417ece2a727e7df6d2d33af1f2630f7", "fetched_at": "2026-08-28T04:05:08.736269+00:00", "kind": "readme", "missing": false, "url": "https://github.com/apache/gluten"}, {"content_hash": "411c21b51d036e3360aba45b61c9ce59dd9a8a13967ccc73bedb30776410ae64", "fetched_at": "2026-08-29T11:25:08.245030+00:00", "kind": "homepage", "missing": false, "url": "https://gluten.apache.org/"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T03:54:40.142081+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8ff508c8ec3d5d3df2167ddd8c542b01b417ece2a727e7df6d2d33af1f2630f7", "fetched_at": "2026-08-28T04:05:08.736269+00:00", "kind": "readme", "missing": false, "url": "https://github.com/apache/gluten"}, {"content_hash": "411c21b51d036e3360aba45b61c9ce59dd9a8a13967ccc73bedb30776410ae64", "fetched_at": "2026-08-29T11:25:08.245030+00:00", "kind": "homepage", "missing": false, "url": "https://gluten.apache.org/"}], "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:05:08.736269+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:05:08.736269+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:05:08.736269+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T03:54:40.142081+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8ff508c8ec3d5d3df2167ddd8c542b01b417ece2a727e7df6d2d33af1f2630f7", "fetched_at": "2026-08-28T04:05:08.736269+00:00", "kind": "readme", "missing": false, "url": "https://github.com/apache/gluten"}, {"content_hash": "411c21b51d036e3360aba45b61c9ce59dd9a8a13967ccc73bedb30776410ae64", "fetched_at": "2026-08-29T11:25:08.245030+00:00", "kind": "homepage", "missing": false, "url": "https://gluten.apache.org/"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:05:08.736269+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:05:08.736269+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T03:54:40.142081+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8ff508c8ec3d5d3df2167ddd8c542b01b417ece2a727e7df6d2d33af1f2630f7", "fetched_at": "2026-08-28T04:05:08.736269+00:00", "kind": "readme", "missing": false, "url": "https://github.com/apache/gluten"}, {"content_hash": "411c21b51d036e3360aba45b61c9ce59dd9a8a13967ccc73bedb30776410ae64", "fetched_at": "2026-08-29T11:25:08.245030+00:00", "kind": "homepage", "missing": false, "url": "https://gluten.apache.org/"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:05:08.736269+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:05:08.736269+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:05:08.736269+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T03:54:40.142081+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8ff508c8ec3d5d3df2167ddd8c542b01b417ece2a727e7df6d2d33af1f2630f7", "fetched_at": "2026-08-28T04:05:08.736269+00:00", "kind": "readme", "missing": false, "url": "https://github.com/apache/gluten"}, {"content_hash": "411c21b51d036e3360aba45b61c9ce59dd9a8a13967ccc73bedb30776410ae64", "fetched_at": "2026-08-29T11:25:08.245030+00:00", "kind": "homepage", "missing": false, "url": "https://gluten.apache.org/"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:05:08.736269+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:05:08.736269+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T03:54:40.142081+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8ff508c8ec3d5d3df2167ddd8c542b01b417ece2a727e7df6d2d33af1f2630f7", "fetched_at": "2026-08-28T04:05:08.736269+00:00", "kind": "readme", "missing": false, "url": "https://github.com/apache/gluten"}, {"content_hash": "411c21b51d036e3360aba45b61c9ce59dd9a8a13967ccc73bedb30776410ae64", "fetched_at": "2026-08-29T11:25:08.245030+00:00", "kind": "homepage", "missing": false, "url": "https://gluten.apache.org/"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T03:54:40.142081+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8ff508c8ec3d5d3df2167ddd8c542b01b417ece2a727e7df6d2d33af1f2630f7", "fetched_at": "2026-08-28T04:05:08.736269+00:00", "kind": "readme", "missing": false, "url": "https://github.com/apache/gluten"}, {"content_hash": "411c21b51d036e3360aba45b61c9ce59dd9a8a13967ccc73bedb30776410ae64", "fetched_at": "2026-08-29T11:25:08.245030+00:00", "kind": "homepage", "missing": false, "url": "https://gluten.apache.org/"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T03:54:40.142081+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8ff508c8ec3d5d3df2167ddd8c542b01b417ece2a727e7df6d2d33af1f2630f7", "fetched_at": "2026-08-28T04:05:08.736269+00:00", "kind": "readme", "missing": false, "url": "https://github.com/apache/gluten"}, {"content_hash": "411c21b51d036e3360aba45b61c9ce59dd9a8a13967ccc73bedb30776410ae64", "fetched_at": "2026-08-29T11:25:08.245030+00:00", "kind": "homepage", "missing": false, "url": "https://gluten.apache.org/"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T03:54:40.142081+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8ff508c8ec3d5d3df2167ddd8c542b01b417ece2a727e7df6d2d33af1f2630f7", "fetched_at": "2026-08-28T04:05:08.736269+00:00", "kind": "readme", "missing": false, "url": "https://github.com/apache/gluten"}, {"content_hash": "411c21b51d036e3360aba45b61c9ce59dd9a8a13967ccc73bedb30776410ae64", "fetched_at": "2026-08-29T11:25:08.245030+00:00", "kind": "homepage", "missing": false, "url": "https://gluten.apache.org/"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 99, "longevity": 100, "rhythm": 75}, "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": 1731, "days_push": 7, "days_rel": 7, "gap_med": 131.5, "n_releases_24m": 7}, "score": 91, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}