sparkforensics-cli 0.1.0 → 0.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -0
- package/bin/sparkforensics-analyze.mjs +113 -48
- package/export-template/docs/404.html +25 -0
- package/export-template/docs/assets/app.DQTZyGL1.js +1 -0
- package/export-template/docs/assets/aqe-loop.IwQSATHw.svg +1 -0
- package/export-template/docs/assets/aqe-loop.dark.DGbaxqJE.svg +1 -0
- package/export-template/docs/assets/broadcast-vs-shuffle.Db4WY1XK.svg +1 -0
- package/export-template/docs/assets/broadcast-vs-shuffle.dark.C7Bxs0mG.svg +1 -0
- package/export-template/docs/assets/cache-lifecycle.dark.B-hS7AgU.svg +1 -0
- package/export-template/docs/assets/cache-lifecycle.rEOVYQNU.svg +1 -0
- package/export-template/docs/assets/chunks/@localSearchIndexroot.DppnXnDE.js +1 -0
- package/export-template/docs/assets/chunks/VPLocalSearchBox.BkBIPFs6.js +9 -0
- package/export-template/docs/assets/chunks/duplicate-plan-subtree.dark.Cdp70QhV.js +1 -0
- package/export-template/docs/assets/chunks/framework.DSg0KOwT.js +20 -0
- package/export-template/docs/assets/chunks/retry-escalation-ladder.dark.DHipdJgZ.js +1 -0
- package/export-template/docs/assets/chunks/theme.DP0u1AUq.js +2 -0
- package/export-template/docs/assets/cold-start-timeline.DxC_Sc7w.svg +1 -0
- package/export-template/docs/assets/cold-start-timeline.dark.CZ17YcAG.svg +1 -0
- package/export-template/docs/assets/columnar-layout.PghGeOEA.svg +1 -0
- package/export-template/docs/assets/columnar-layout.dark.BVNlz0ff.svg +1 -0
- package/export-template/docs/assets/container-memory.DIO0AnIm.svg +1 -0
- package/export-template/docs/assets/container-memory.dark.CP-5zuCl.svg +1 -0
- package/export-template/docs/assets/contributor-guide_architecture_board-widgets.md.CWpj01WU.js +1 -0
- package/export-template/docs/assets/contributor-guide_architecture_board-widgets.md.CWpj01WU.lean.js +1 -0
- package/export-template/docs/assets/contributor-guide_architecture_detector-contract.md.CgzUsQ6W.js +1 -0
- package/export-template/docs/assets/contributor-guide_architecture_detector-contract.md.CgzUsQ6W.lean.js +1 -0
- package/export-template/docs/assets/contributor-guide_architecture_drill-down.md.BtPdlM7r.js +1 -0
- package/export-template/docs/assets/contributor-guide_architecture_drill-down.md.BtPdlM7r.lean.js +1 -0
- package/export-template/docs/assets/contributor-guide_architecture_impact-estimation.md.CooslVJt.js +1 -0
- package/export-template/docs/assets/contributor-guide_architecture_impact-estimation.md.CooslVJt.lean.js +1 -0
- package/export-template/docs/assets/contributor-guide_architecture_index.md.3TO9ic6w.js +1 -0
- package/export-template/docs/assets/contributor-guide_architecture_index.md.3TO9ic6w.lean.js +1 -0
- package/export-template/docs/assets/contributor-guide_architecture_overview.md.CehiRmGn.js +1 -0
- package/export-template/docs/assets/contributor-guide_architecture_overview.md.CehiRmGn.lean.js +1 -0
- package/export-template/docs/assets/contributor-guide_architecture_state-and-history.md.C-xxn0q7.js +1 -0
- package/export-template/docs/assets/contributor-guide_architecture_state-and-history.md.C-xxn0q7.lean.js +1 -0
- package/export-template/docs/assets/contributor-guide_architecture_widget-rendering.md.R27gQrgY.js +1 -0
- package/export-template/docs/assets/contributor-guide_architecture_widget-rendering.md.R27gQrgY.lean.js +1 -0
- package/export-template/docs/assets/contributor-guide_architecture_worker-protocol.md.IbnfNrV3.js +6 -0
- package/export-template/docs/assets/contributor-guide_architecture_worker-protocol.md.IbnfNrV3.lean.js +1 -0
- package/export-template/docs/assets/contributor-guide_contributing.md.CvRsdr6J.js +1 -0
- package/export-template/docs/assets/contributor-guide_contributing.md.CvRsdr6J.lean.js +1 -0
- package/export-template/docs/assets/contributor-guide_development-setup.md.DvAN_9mK.js +12 -0
- package/export-template/docs/assets/contributor-guide_development-setup.md.DvAN_9mK.lean.js +1 -0
- package/export-template/docs/assets/contributor-guide_testing.md.6rIKqSyY.js +1 -0
- package/export-template/docs/assets/contributor-guide_testing.md.6rIKqSyY.lean.js +1 -0
- package/export-template/docs/assets/dag-stages.DSz_S937.svg +1 -0
- package/export-template/docs/assets/dag-stages.dark.F72UzxH4.svg +1 -0
- package/export-template/docs/assets/driver-executor.D5pQ7YN1.svg +1 -0
- package/export-template/docs/assets/driver-executor.dark.BmX9cPvh.svg +1 -0
- package/export-template/docs/assets/duplicate-plan-subtree.B4cvN6fj.svg +1 -0
- package/export-template/docs/assets/duplicate-plan-subtree.dark.Dw8wS0Ag.svg +1 -0
- package/export-template/docs/assets/index.md.CHJVslga.js +1 -0
- package/export-template/docs/assets/index.md.CHJVslga.lean.js +1 -0
- package/export-template/docs/assets/inter-italic-cyrillic-ext.r48I6akx.woff2 +0 -0
- package/export-template/docs/assets/inter-italic-cyrillic.By2_1cv3.woff2 +0 -0
- package/export-template/docs/assets/inter-italic-greek-ext.1u6EdAuj.woff2 +0 -0
- package/export-template/docs/assets/inter-italic-greek.DJ8dCoTZ.woff2 +0 -0
- package/export-template/docs/assets/inter-italic-latin-ext.CN1xVJS-.woff2 +0 -0
- package/export-template/docs/assets/inter-italic-latin.C2AdPX0b.woff2 +0 -0
- package/export-template/docs/assets/inter-italic-vietnamese.BSbpV94h.woff2 +0 -0
- package/export-template/docs/assets/inter-roman-cyrillic-ext.BBPuwvHQ.woff2 +0 -0
- package/export-template/docs/assets/inter-roman-cyrillic.C5lxZ8CY.woff2 +0 -0
- package/export-template/docs/assets/inter-roman-greek-ext.CqjqNYQ-.woff2 +0 -0
- package/export-template/docs/assets/inter-roman-greek.BBVDIX6e.woff2 +0 -0
- package/export-template/docs/assets/inter-roman-latin-ext.4ZJIpNVo.woff2 +0 -0
- package/export-template/docs/assets/inter-roman-latin.Di8DUHzh.woff2 +0 -0
- package/export-template/docs/assets/inter-roman-vietnamese.BjW4sHH5.woff2 +0 -0
- package/export-template/docs/assets/join-strategy.C_FvrCEo.svg +1 -0
- package/export-template/docs/assets/join-strategy.dark.ChMLnNII.svg +1 -0
- package/export-template/docs/assets/memory-borrowing.BqQRJg0u.svg +1 -0
- package/export-template/docs/assets/memory-borrowing.dark.Yhh20O9C.svg +1 -0
- package/export-template/docs/assets/memory-regions.XHvO7jHG.svg +1 -0
- package/export-template/docs/assets/memory-regions.dark.D4TP9_08.svg +1 -0
- package/export-template/docs/assets/repartition-vs-coalesce.BovLRrpj.svg +1 -0
- package/export-template/docs/assets/repartition-vs-coalesce.dark.BhAczKZQ.svg +1 -0
- package/export-template/docs/assets/retry-escalation-ladder.DyTKJJmZ.svg +1 -0
- package/export-template/docs/assets/retry-escalation-ladder.dark.BdsabtU3.svg +1 -0
- package/export-template/docs/assets/shuffle-map-reduce.KuOEZVmg.svg +1 -0
- package/export-template/docs/assets/shuffle-map-reduce.dark.BgQZnFSb.svg +1 -0
- package/export-template/docs/assets/spill-classification.BU2euYDO.svg +1 -0
- package/export-template/docs/assets/spill-classification.dark.D7i1M40d.svg +1 -0
- package/export-template/docs/assets/style.DSixAiZE.css +1 -0
- package/export-template/docs/assets/tuning-reference_anti-patterns.md.Df1YMIHu.js +1 -0
- package/export-template/docs/assets/tuning-reference_anti-patterns.md.Df1YMIHu.lean.js +1 -0
- package/export-template/docs/assets/tuning-reference_aqe.md.BIsCtLzm.js +1 -0
- package/export-template/docs/assets/tuning-reference_aqe.md.BIsCtLzm.lean.js +1 -0
- package/export-template/docs/assets/tuning-reference_bottleneck-broadcast-sizing.md.CEstB3Ia.js +1 -0
- package/export-template/docs/assets/tuning-reference_bottleneck-broadcast-sizing.md.CEstB3Ia.lean.js +1 -0
- package/export-template/docs/assets/tuning-reference_bottleneck-cold-start.md.CEuy-72y.js +7 -0
- package/export-template/docs/assets/tuning-reference_bottleneck-cold-start.md.CEuy-72y.lean.js +1 -0
- package/export-template/docs/assets/tuning-reference_bottleneck-duplicate-plan-subtree.md.CIohQDfn.js +1 -0
- package/export-template/docs/assets/tuning-reference_bottleneck-duplicate-plan-subtree.md.CIohQDfn.lean.js +1 -0
- package/export-template/docs/assets/tuning-reference_bottleneck-failures.md.4z5BXGJ2.js +6 -0
- package/export-template/docs/assets/tuning-reference_bottleneck-failures.md.4z5BXGJ2.lean.js +1 -0
- package/export-template/docs/assets/tuning-reference_bottleneck-gc.md.DSxzZRK7.js +6 -0
- package/export-template/docs/assets/tuning-reference_bottleneck-gc.md.DSxzZRK7.lean.js +1 -0
- package/export-template/docs/assets/tuning-reference_bottleneck-job-failure-rate.md.BaJl__1W.js +8 -0
- package/export-template/docs/assets/tuning-reference_bottleneck-job-failure-rate.md.BaJl__1W.lean.js +1 -0
- package/export-template/docs/assets/tuning-reference_bottleneck-memory-utilization.md.DbP-SJZc.js +7 -0
- package/export-template/docs/assets/tuning-reference_bottleneck-memory-utilization.md.DbP-SJZc.lean.js +1 -0
- package/export-template/docs/assets/tuning-reference_bottleneck-retry-waste.md.D5JMjVOt.js +1 -0
- package/export-template/docs/assets/tuning-reference_bottleneck-retry-waste.md.D5JMjVOt.lean.js +1 -0
- package/export-template/docs/assets/tuning-reference_bottleneck-shuffle.md.CM-nTmIH.js +12 -0
- package/export-template/docs/assets/tuning-reference_bottleneck-shuffle.md.CM-nTmIH.lean.js +1 -0
- package/export-template/docs/assets/tuning-reference_bottleneck-skew.md.BdUwiDhn.js +14 -0
- package/export-template/docs/assets/tuning-reference_bottleneck-skew.md.BdUwiDhn.lean.js +1 -0
- package/export-template/docs/assets/tuning-reference_bottleneck-slow-host.md.BlIo6UDW.js +7 -0
- package/export-template/docs/assets/tuning-reference_bottleneck-slow-host.md.BlIo6UDW.lean.js +1 -0
- package/export-template/docs/assets/tuning-reference_bottleneck-small-files.md.B8kloyx8.js +5 -0
- package/export-template/docs/assets/tuning-reference_bottleneck-small-files.md.B8kloyx8.lean.js +1 -0
- package/export-template/docs/assets/tuning-reference_bottleneck-spill.md.PNH7mITt.js +6 -0
- package/export-template/docs/assets/tuning-reference_bottleneck-spill.md.PNH7mITt.lean.js +1 -0
- package/export-template/docs/assets/tuning-reference_bottleneck-straggler.md.DY36fHN5.js +7 -0
- package/export-template/docs/assets/tuning-reference_bottleneck-straggler.md.DY36fHN5.lean.js +1 -0
- package/export-template/docs/assets/tuning-reference_bottleneck-tiny-tasks.md.QTV7O8kU.js +8 -0
- package/export-template/docs/assets/tuning-reference_bottleneck-tiny-tasks.md.QTV7O8kU.lean.js +1 -0
- package/export-template/docs/assets/tuning-reference_bottleneck-utilization.md.DTiueZC3.js +5 -0
- package/export-template/docs/assets/tuning-reference_bottleneck-utilization.md.DTiueZC3.lean.js +1 -0
- package/export-template/docs/assets/tuning-reference_caching.md.B7aQ8asB.js +1 -0
- package/export-template/docs/assets/tuning-reference_caching.md.B7aQ8asB.lean.js +1 -0
- package/export-template/docs/assets/tuning-reference_cluster-config.md.ZVmDGsQ3.js +1 -0
- package/export-template/docs/assets/tuning-reference_cluster-config.md.ZVmDGsQ3.lean.js +1 -0
- package/export-template/docs/assets/tuning-reference_config.md.UvveiWG3.js +1 -0
- package/export-template/docs/assets/tuning-reference_config.md.UvveiWG3.lean.js +1 -0
- package/export-template/docs/assets/tuning-reference_data-formats.md.bjCAWH3N.js +1 -0
- package/export-template/docs/assets/tuning-reference_data-formats.md.bjCAWH3N.lean.js +1 -0
- package/export-template/docs/assets/tuning-reference_index.md.BQ_NooMV.js +1 -0
- package/export-template/docs/assets/tuning-reference_index.md.BQ_NooMV.lean.js +1 -0
- package/export-template/docs/assets/tuning-reference_intro.md.CobD-lGB.js +1 -0
- package/export-template/docs/assets/tuning-reference_intro.md.CobD-lGB.lean.js +1 -0
- package/export-template/docs/assets/tuning-reference_joins.md.BtKs_CuW.js +1 -0
- package/export-template/docs/assets/tuning-reference_joins.md.BtKs_CuW.lean.js +1 -0
- package/export-template/docs/assets/tuning-reference_memory-model.md.DhT-n4y3.js +1 -0
- package/export-template/docs/assets/tuning-reference_memory-model.md.DhT-n4y3.lean.js +1 -0
- package/export-template/docs/assets/tuning-reference_metrics.md.mLOh7Apj.js +1 -0
- package/export-template/docs/assets/tuning-reference_metrics.md.mLOh7Apj.lean.js +1 -0
- package/export-template/docs/assets/tuning-reference_partitioning.md.q0zKF_8X.js +1 -0
- package/export-template/docs/assets/tuning-reference_partitioning.md.q0zKF_8X.lean.js +1 -0
- package/export-template/docs/assets/tuning-reference_pyspark.md.DDCfvN9t.js +6 -0
- package/export-template/docs/assets/tuning-reference_pyspark.md.DDCfvN9t.lean.js +1 -0
- package/export-template/docs/assets/tuning-reference_shuffle.md.BZZ7R4Ix.js +1 -0
- package/export-template/docs/assets/tuning-reference_shuffle.md.BZZ7R4Ix.lean.js +1 -0
- package/export-template/docs/assets/tuning-reference_spark-architecture.md.Dwzm5avO.js +1 -0
- package/export-template/docs/assets/tuning-reference_spark-architecture.md.Dwzm5avO.lean.js +1 -0
- package/export-template/docs/assets/tuning-reference_table-formats.md.D6wj-2dX.js +1 -0
- package/export-template/docs/assets/tuning-reference_table-formats.md.D6wj-2dX.lean.js +1 -0
- package/export-template/docs/assets/udf-execution-models.BUFDICuG.svg +1 -0
- package/export-template/docs/assets/udf-execution-models.dark.YTNS6GDq.svg +1 -0
- package/export-template/docs/assets/user-guide_alternative-log-retrieval.md.B4tPGIal.js +1 -0
- package/export-template/docs/assets/user-guide_alternative-log-retrieval.md.B4tPGIal.lean.js +1 -0
- package/export-template/docs/assets/user-guide_getting-started.md.BJvwLEIM.js +3 -0
- package/export-template/docs/assets/user-guide_getting-started.md.BJvwLEIM.lean.js +1 -0
- package/export-template/docs/assets/user-guide_mcp-tools.md.Vi3RoflJ.js +125 -0
- package/export-template/docs/assets/user-guide_mcp-tools.md.Vi3RoflJ.lean.js +1 -0
- package/export-template/docs/assets/user-guide_run-comparison.md.CQc1aoU8.js +1 -0
- package/export-template/docs/assets/user-guide_run-comparison.md.CQc1aoU8.lean.js +1 -0
- package/export-template/docs/assets/user-guide_understanding-findings.md.DL1UDhvR.js +1 -0
- package/export-template/docs/assets/user-guide_understanding-findings.md.DL1UDhvR.lean.js +1 -0
- package/export-template/docs/contributor-guide/architecture/board-widgets.html +25 -0
- package/export-template/docs/contributor-guide/architecture/detector-contract.html +25 -0
- package/export-template/docs/contributor-guide/architecture/drill-down.html +25 -0
- package/export-template/docs/contributor-guide/architecture/impact-estimation.html +25 -0
- package/export-template/docs/contributor-guide/architecture/index.html +25 -0
- package/export-template/docs/contributor-guide/architecture/overview.html +25 -0
- package/export-template/docs/contributor-guide/architecture/state-and-history.html +25 -0
- package/export-template/docs/contributor-guide/architecture/widget-rendering.html +25 -0
- package/export-template/docs/contributor-guide/architecture/worker-protocol.html +30 -0
- package/export-template/docs/contributor-guide/contributing.html +25 -0
- package/export-template/docs/contributor-guide/development-setup.html +36 -0
- package/export-template/docs/contributor-guide/testing.html +25 -0
- package/export-template/docs/favicon.svg +4 -0
- package/export-template/docs/hashmap.json +1 -0
- package/export-template/docs/index.html +25 -0
- package/export-template/docs/package.json +1 -0
- package/export-template/docs/tuning-reference/anti-patterns.html +25 -0
- package/export-template/docs/tuning-reference/aqe.html +25 -0
- package/export-template/docs/tuning-reference/bottleneck-broadcast-sizing.html +25 -0
- package/export-template/docs/tuning-reference/bottleneck-cold-start.html +31 -0
- package/export-template/docs/tuning-reference/bottleneck-duplicate-plan-subtree.html +25 -0
- package/export-template/docs/tuning-reference/bottleneck-failures.html +30 -0
- package/export-template/docs/tuning-reference/bottleneck-gc.html +30 -0
- package/export-template/docs/tuning-reference/bottleneck-job-failure-rate.html +32 -0
- package/export-template/docs/tuning-reference/bottleneck-memory-utilization.html +31 -0
- package/export-template/docs/tuning-reference/bottleneck-retry-waste.html +25 -0
- package/export-template/docs/tuning-reference/bottleneck-shuffle.html +36 -0
- package/export-template/docs/tuning-reference/bottleneck-skew.html +38 -0
- package/export-template/docs/tuning-reference/bottleneck-slow-host.html +31 -0
- package/export-template/docs/tuning-reference/bottleneck-small-files.html +29 -0
- package/export-template/docs/tuning-reference/bottleneck-spill.html +30 -0
- package/export-template/docs/tuning-reference/bottleneck-straggler.html +31 -0
- package/export-template/docs/tuning-reference/bottleneck-tiny-tasks.html +32 -0
- package/export-template/docs/tuning-reference/bottleneck-utilization.html +29 -0
- package/export-template/docs/tuning-reference/caching.html +25 -0
- package/export-template/docs/tuning-reference/cluster-config.html +25 -0
- package/export-template/docs/tuning-reference/config.html +25 -0
- package/export-template/docs/tuning-reference/data-formats.html +25 -0
- package/export-template/docs/tuning-reference/index.html +25 -0
- package/export-template/docs/tuning-reference/intro.html +25 -0
- package/export-template/docs/tuning-reference/joins.html +25 -0
- package/export-template/docs/tuning-reference/memory-model.html +25 -0
- package/export-template/docs/tuning-reference/metrics.html +25 -0
- package/export-template/docs/tuning-reference/partitioning.html +25 -0
- package/export-template/docs/tuning-reference/pyspark.html +30 -0
- package/export-template/docs/tuning-reference/shuffle.html +25 -0
- package/export-template/docs/tuning-reference/spark-architecture.html +25 -0
- package/export-template/docs/tuning-reference/table-formats.html +25 -0
- package/export-template/docs/user-guide/alternative-log-retrieval.html +25 -0
- package/export-template/docs/user-guide/getting-started.html +27 -0
- package/export-template/docs/user-guide/mcp-tools.html +149 -0
- package/export-template/docs/user-guide/run-comparison.html +25 -0
- package/export-template/docs/user-guide/understanding-findings.html +25 -0
- package/export-template/docs/vp-icons.css +0 -0
- package/export-template/favicon.svg +4 -0
- package/export-template/index.html +111 -0
- package/export-template/parser-worker-DyjiQvfP.js +112 -0
- package/export-template/sample-runs/sample-run.ndjson.gz +0 -0
- package/package.json +20 -6
- package/vendor-core/analyzer.js +74 -74
- package/vendor-core/cli/budgets.js +13 -27
- package/vendor-core/cli/collect-run.js +43 -19
- package/vendor-core/core-count.js +25 -27
- package/vendor-core/core-locality-ratio.js +4 -11
- package/vendor-core/core-time-series.js +6 -12
- package/vendor-core/core-usage-locality.js +3 -4
- package/vendor-core/detectors.js +395 -389
- package/vendor-core/docs-config.js +69 -21
- package/vendor-core/docs-content/chapters/01-intro.md +32 -0
- package/vendor-core/docs-content/chapters/02-spark-architecture.md +76 -0
- package/vendor-core/docs-content/chapters/03-memory-model.md +73 -0
- package/vendor-core/docs-content/chapters/04-partitioning.md +65 -0
- package/vendor-core/docs-content/chapters/05-joins.md +62 -0
- package/vendor-core/docs-content/chapters/06-shuffle.md +59 -0
- package/vendor-core/docs-content/chapters/07-data-formats.md +81 -0
- package/vendor-core/docs-content/chapters/07b-table-formats.md +56 -0
- package/vendor-core/docs-content/chapters/08-caching.md +58 -0
- package/vendor-core/docs-content/chapters/09-pyspark.md +78 -0
- package/vendor-core/docs-content/chapters/10-aqe.md +167 -0
- package/vendor-core/docs-content/chapters/11-cluster-config.md +170 -0
- package/vendor-core/docs-content/chapters/12-anti-patterns.md +171 -0
- package/vendor-core/docs-content/chapters/14-metrics.md +87 -0
- package/vendor-core/docs-content/chapters/15-config.md +93 -0
- package/vendor-core/docs-content/chapters/nav-index.json +370 -0
- package/vendor-core/docs-content/detection/cache.md +7 -0
- package/vendor-core/docs-content/detection/cfg.md +15 -0
- package/vendor-core/docs-content/detection/chrn.md +9 -0
- package/vendor-core/docs-content/detection/cold.md +4 -0
- package/vendor-core/docs-content/detection/cstor.md +4 -0
- package/vendor-core/docs-content/detection/fail.md +5 -0
- package/vendor-core/docs-content/detection/gc.md +4 -0
- package/vendor-core/docs-content/detection/host.md +5 -0
- package/vendor-core/docs-content/detection/incmp.md +6 -0
- package/vendor-core/docs-content/detection/jobs.md +4 -0
- package/vendor-core/docs-content/detection/local.md +6 -0
- package/vendor-core/docs-content/detection/mem.md +10 -0
- package/vendor-core/docs-content/detection/part.md +5 -0
- package/vendor-core/docs-content/detection/plan.md +14 -0
- package/vendor-core/docs-content/detection/retry.md +4 -0
- package/vendor-core/docs-content/detection/sfail.md +5 -0
- package/vendor-core/docs-content/detection/shape.md +5 -0
- package/vendor-core/docs-content/detection/shfl.md +4 -0
- package/vendor-core/docs-content/detection/skew.md +6 -0
- package/vendor-core/docs-content/detection/slow.md +6 -0
- package/vendor-core/docs-content/detection/spec.md +8 -0
- package/vendor-core/docs-content/detection/spill.md +7 -0
- package/vendor-core/docs-content/detection/strag.md +5 -0
- package/vendor-core/docs-content/detection/tiny.md +4 -0
- package/vendor-core/docs-content/detection/util.md +4 -0
- package/vendor-core/docs-content/diagrams/aqe-loop.dark.svg +1 -0
- package/vendor-core/docs-content/diagrams/aqe-loop.svg +1 -0
- package/vendor-core/docs-content/diagrams/broadcast-vs-shuffle.dark.svg +1 -0
- package/vendor-core/docs-content/diagrams/broadcast-vs-shuffle.svg +1 -0
- package/vendor-core/docs-content/diagrams/cache-lifecycle.dark.svg +1 -0
- package/vendor-core/docs-content/diagrams/cache-lifecycle.svg +1 -0
- package/vendor-core/docs-content/diagrams/cold-start-timeline.dark.svg +1 -0
- package/vendor-core/docs-content/diagrams/cold-start-timeline.svg +1 -0
- package/vendor-core/docs-content/diagrams/columnar-layout.dark.svg +1 -0
- package/vendor-core/docs-content/diagrams/columnar-layout.svg +1 -0
- package/vendor-core/docs-content/diagrams/container-memory.dark.svg +1 -0
- package/vendor-core/docs-content/diagrams/container-memory.svg +1 -0
- package/vendor-core/docs-content/diagrams/dag-stages.dark.svg +1 -0
- package/vendor-core/docs-content/diagrams/dag-stages.svg +1 -0
- package/vendor-core/docs-content/diagrams/driver-executor.dark.svg +1 -0
- package/vendor-core/docs-content/diagrams/driver-executor.svg +1 -0
- package/vendor-core/docs-content/diagrams/duplicate-plan-subtree.dark.svg +1 -0
- package/vendor-core/docs-content/diagrams/duplicate-plan-subtree.svg +1 -0
- package/vendor-core/docs-content/diagrams/join-strategy.dark.svg +1 -0
- package/vendor-core/docs-content/diagrams/join-strategy.svg +1 -0
- package/vendor-core/docs-content/diagrams/memory-borrowing.dark.svg +1 -0
- package/vendor-core/docs-content/diagrams/memory-borrowing.svg +1 -0
- package/vendor-core/docs-content/diagrams/memory-regions.dark.svg +1 -0
- package/vendor-core/docs-content/diagrams/memory-regions.svg +1 -0
- package/vendor-core/docs-content/diagrams/repartition-vs-coalesce.dark.svg +1 -0
- package/vendor-core/docs-content/diagrams/repartition-vs-coalesce.svg +1 -0
- package/vendor-core/docs-content/diagrams/retry-escalation-ladder.dark.svg +1 -0
- package/vendor-core/docs-content/diagrams/retry-escalation-ladder.svg +1 -0
- package/vendor-core/docs-content/diagrams/shuffle-map-reduce.dark.svg +1 -0
- package/vendor-core/docs-content/diagrams/shuffle-map-reduce.svg +1 -0
- package/vendor-core/docs-content/diagrams/spill-classification.dark.svg +1 -0
- package/vendor-core/docs-content/diagrams/spill-classification.svg +1 -0
- package/vendor-core/docs-content/diagrams/udf-execution-models.dark.svg +1 -0
- package/vendor-core/docs-content/diagrams/udf-execution-models.svg +1 -0
- package/vendor-core/docs-content/tuning/broadcast-sizing.md +78 -0
- package/vendor-core/docs-content/tuning/cold-start.md +81 -0
- package/vendor-core/docs-content/tuning/duplicate-plan-subtree.md +45 -0
- package/vendor-core/docs-content/tuning/failures.md +124 -0
- package/vendor-core/docs-content/tuning/gc.md +110 -0
- package/vendor-core/docs-content/tuning/job-failure-rate.md +101 -0
- package/vendor-core/docs-content/tuning/memory-utilization.md +58 -0
- package/vendor-core/docs-content/tuning/retry-waste.md +90 -0
- package/vendor-core/docs-content/tuning/shuffle.md +154 -0
- package/vendor-core/docs-content/tuning/skew.md +123 -0
- package/vendor-core/docs-content/tuning/slow-host.md +117 -0
- package/vendor-core/docs-content/tuning/small-files.md +99 -0
- package/vendor-core/docs-content/tuning/spill.md +114 -0
- package/vendor-core/docs-content/tuning/straggler.md +103 -0
- package/vendor-core/docs-content/tuning/tiny-tasks.md +94 -0
- package/vendor-core/docs-content/tuning/utilization.md +90 -0
- package/vendor-core/docs-site-config.js +10 -17
- package/vendor-core/efficiency-model.js +7 -13
- package/vendor-core/etl-phases.js +3 -5
- package/vendor-core/event-handlers.js +232 -134
- package/vendor-core/event-schemas.js +48 -114
- package/vendor-core/evidence-availability.js +5 -10
- package/vendor-core/evidence-report.js +73 -123
- package/vendor-core/export-data.js +48 -0
- package/vendor-core/finding-action-label.js +4 -10
- package/vendor-core/finding-filter-predicate.js +3 -7
- package/vendor-core/finding-generic-recommendation.js +112 -0
- package/vendor-core/finding-names.js +51 -0
- package/vendor-core/format-utils.js +112 -38
- package/vendor-core/impact-band.js +18 -24
- package/vendor-core/impact-estimator.js +38 -74
- package/vendor-core/ingest.js +7 -13
- package/vendor-core/job-groups.js +3 -6
- package/vendor-core/list-runs.js +278 -0
- package/vendor-core/load-vendored.js +6 -12
- package/vendor-core/log-header-peek.js +81 -0
- package/vendor-core/lz4-block.js +4 -6
- package/vendor-core/mcp-server-factory.js +38 -8
- package/vendor-core/mcp-tools.js +105 -76
- package/vendor-core/model-assembler.js +8 -16
- package/vendor-core/occupancy.js +5 -9
- package/vendor-core/parser-worker.js +20 -29
- package/vendor-core/plan-dot.js +2 -5
- package/vendor-core/plan-duration-attribution.js +78 -29
- package/vendor-core/plan-graph-model.js +126 -69
- package/vendor-core/plan-node-detail.js +31 -17
- package/vendor-core/plan-summary.js +19 -8
- package/vendor-core/recommendation-rollup.js +35 -39
- package/vendor-core/redact.js +72 -16
- package/vendor-core/rolling-log-reassembly.js +4 -6
- package/vendor-core/run-comparison.js +86 -72
- package/vendor-core/scaling-sim.js +5 -7
- package/vendor-core/session-snapshot.js +1 -1
- package/vendor-core/shs-fetch.js +4 -6
- package/vendor-core/shs-load.js +9 -13
- package/vendor-core/shs-request.js +1 -1
- package/vendor-core/stage-quantiles.js +14 -0
- package/vendor-core/types.js +78 -18
- package/vendor-core/wasted-core-hours.js +7 -12
|
@@ -0,0 +1,370 @@
|
|
|
1
|
+
[
|
|
2
|
+
{
|
|
3
|
+
"anchor": "intro",
|
|
4
|
+
"section": "Getting Started",
|
|
5
|
+
"title": "Introduction",
|
|
6
|
+
"keywords": [
|
|
7
|
+
"severity-dot",
|
|
8
|
+
"tag-system"
|
|
9
|
+
],
|
|
10
|
+
"store": "chapters",
|
|
11
|
+
"slug": "01-intro"
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
"anchor": "spark-architecture",
|
|
15
|
+
"section": "Optimization Guide",
|
|
16
|
+
"title": "Spark Execution Model",
|
|
17
|
+
"keywords": [
|
|
18
|
+
"driver-executor",
|
|
19
|
+
"dagscheduler",
|
|
20
|
+
"taskscheduler",
|
|
21
|
+
"stage-boundary"
|
|
22
|
+
],
|
|
23
|
+
"store": "chapters",
|
|
24
|
+
"slug": "02-spark-architecture"
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"anchor": "memory-model",
|
|
28
|
+
"section": "Optimization Guide",
|
|
29
|
+
"title": "Memory Management",
|
|
30
|
+
"keywords": [
|
|
31
|
+
"unified-memory",
|
|
32
|
+
"execution-memory",
|
|
33
|
+
"storage-memory",
|
|
34
|
+
"spill",
|
|
35
|
+
"memory-overhead"
|
|
36
|
+
],
|
|
37
|
+
"store": "chapters",
|
|
38
|
+
"slug": "03-memory-model"
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
"anchor": "partitioning",
|
|
42
|
+
"section": "Optimization Guide",
|
|
43
|
+
"title": "Partitioning",
|
|
44
|
+
"keywords": [
|
|
45
|
+
"repartition",
|
|
46
|
+
"coalesce",
|
|
47
|
+
"skew"
|
|
48
|
+
],
|
|
49
|
+
"store": "chapters",
|
|
50
|
+
"slug": "04-partitioning"
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
"anchor": "joins",
|
|
54
|
+
"section": "Optimization Guide",
|
|
55
|
+
"title": "Join Optimization",
|
|
56
|
+
"keywords": [
|
|
57
|
+
"broadcast",
|
|
58
|
+
"shuffle-join",
|
|
59
|
+
"bucketing",
|
|
60
|
+
"aqe"
|
|
61
|
+
],
|
|
62
|
+
"store": "chapters",
|
|
63
|
+
"slug": "05-joins"
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
"anchor": "shuffle",
|
|
67
|
+
"section": "Optimization Guide",
|
|
68
|
+
"title": "Shuffle",
|
|
69
|
+
"keywords": [
|
|
70
|
+
"sortshufflemanager",
|
|
71
|
+
"bucketing",
|
|
72
|
+
"storage-partition-join"
|
|
73
|
+
],
|
|
74
|
+
"store": "chapters",
|
|
75
|
+
"slug": "06-shuffle"
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
"anchor": "data-formats",
|
|
79
|
+
"section": "Optimization Guide",
|
|
80
|
+
"title": "Data Formats",
|
|
81
|
+
"keywords": [
|
|
82
|
+
"parquet",
|
|
83
|
+
"orc",
|
|
84
|
+
"predicate-pushdown",
|
|
85
|
+
"compression"
|
|
86
|
+
],
|
|
87
|
+
"store": "chapters",
|
|
88
|
+
"slug": "07-data-formats"
|
|
89
|
+
},
|
|
90
|
+
{
|
|
91
|
+
"anchor": "table-formats",
|
|
92
|
+
"section": "Optimization Guide",
|
|
93
|
+
"title": "Table Formats",
|
|
94
|
+
"keywords": [
|
|
95
|
+
"delta",
|
|
96
|
+
"iceberg",
|
|
97
|
+
"hudi",
|
|
98
|
+
"compaction",
|
|
99
|
+
"optimize",
|
|
100
|
+
"z-order",
|
|
101
|
+
"deletion-vectors"
|
|
102
|
+
],
|
|
103
|
+
"store": "chapters",
|
|
104
|
+
"slug": "07b-table-formats"
|
|
105
|
+
},
|
|
106
|
+
{
|
|
107
|
+
"anchor": "caching",
|
|
108
|
+
"section": "Optimization Guide",
|
|
109
|
+
"title": "Caching & Persistence",
|
|
110
|
+
"keywords": [
|
|
111
|
+
"cache",
|
|
112
|
+
"persist",
|
|
113
|
+
"storage-level",
|
|
114
|
+
"checkpoint"
|
|
115
|
+
],
|
|
116
|
+
"store": "chapters",
|
|
117
|
+
"slug": "08-caching"
|
|
118
|
+
},
|
|
119
|
+
{
|
|
120
|
+
"anchor": "pyspark",
|
|
121
|
+
"section": "Optimization Guide",
|
|
122
|
+
"title": "PySpark Specifics",
|
|
123
|
+
"keywords": [
|
|
124
|
+
"udf",
|
|
125
|
+
"arrow",
|
|
126
|
+
"pandas-udf",
|
|
127
|
+
"python-worker-memory"
|
|
128
|
+
],
|
|
129
|
+
"store": "chapters",
|
|
130
|
+
"slug": "09-pyspark"
|
|
131
|
+
},
|
|
132
|
+
{
|
|
133
|
+
"anchor": "aqe",
|
|
134
|
+
"section": "Optimization Guide",
|
|
135
|
+
"title": "Adaptive Query Execution",
|
|
136
|
+
"keywords": [
|
|
137
|
+
"partition-coalescing",
|
|
138
|
+
"join-strategy-promotion",
|
|
139
|
+
"skew-splitting"
|
|
140
|
+
],
|
|
141
|
+
"store": "chapters",
|
|
142
|
+
"slug": "10-aqe"
|
|
143
|
+
},
|
|
144
|
+
{
|
|
145
|
+
"anchor": "cluster-config",
|
|
146
|
+
"section": "Optimization Guide",
|
|
147
|
+
"title": "Cluster Tuning",
|
|
148
|
+
"keywords": [
|
|
149
|
+
"executor-sizing",
|
|
150
|
+
"container-memory",
|
|
151
|
+
"dynamic-allocation",
|
|
152
|
+
"locality-wait"
|
|
153
|
+
],
|
|
154
|
+
"store": "chapters",
|
|
155
|
+
"slug": "11-cluster-config"
|
|
156
|
+
},
|
|
157
|
+
{
|
|
158
|
+
"anchor": "anti-patterns",
|
|
159
|
+
"section": "Optimization Guide",
|
|
160
|
+
"title": "Anti-Patterns",
|
|
161
|
+
"keywords": [
|
|
162
|
+
"checklist",
|
|
163
|
+
"anti-pattern"
|
|
164
|
+
],
|
|
165
|
+
"store": "chapters",
|
|
166
|
+
"slug": "12-anti-patterns"
|
|
167
|
+
},
|
|
168
|
+
{
|
|
169
|
+
"anchor": "bottleneck-skew",
|
|
170
|
+
"section": "Detector Catalog",
|
|
171
|
+
"title": "Task Skew",
|
|
172
|
+
"keywords": [
|
|
173
|
+
"skew",
|
|
174
|
+
"aqe-skew-join",
|
|
175
|
+
"salting"
|
|
176
|
+
],
|
|
177
|
+
"store": "tuning",
|
|
178
|
+
"slug": "skew"
|
|
179
|
+
},
|
|
180
|
+
{
|
|
181
|
+
"anchor": "bottleneck-shuffle",
|
|
182
|
+
"section": "Detector Catalog",
|
|
183
|
+
"title": "Shuffle I/O",
|
|
184
|
+
"keywords": [
|
|
185
|
+
"shuffle-bytes",
|
|
186
|
+
"fetch-wait"
|
|
187
|
+
],
|
|
188
|
+
"store": "tuning",
|
|
189
|
+
"slug": "shuffle"
|
|
190
|
+
},
|
|
191
|
+
{
|
|
192
|
+
"anchor": "bottleneck-spill",
|
|
193
|
+
"section": "Detector Catalog",
|
|
194
|
+
"title": "Memory / Disk Spill",
|
|
195
|
+
"keywords": [
|
|
196
|
+
"spill",
|
|
197
|
+
"taskmemorymanager"
|
|
198
|
+
],
|
|
199
|
+
"store": "tuning",
|
|
200
|
+
"slug": "spill"
|
|
201
|
+
},
|
|
202
|
+
{
|
|
203
|
+
"anchor": "bottleneck-gc",
|
|
204
|
+
"section": "Detector Catalog",
|
|
205
|
+
"title": "GC Pressure",
|
|
206
|
+
"keywords": [
|
|
207
|
+
"gc-pressure",
|
|
208
|
+
"memory-fraction",
|
|
209
|
+
"off-heap"
|
|
210
|
+
],
|
|
211
|
+
"store": "tuning",
|
|
212
|
+
"slug": "gc"
|
|
213
|
+
},
|
|
214
|
+
{
|
|
215
|
+
"anchor": "bottleneck-cold-start",
|
|
216
|
+
"section": "Detector Catalog",
|
|
217
|
+
"title": "Cold Start",
|
|
218
|
+
"keywords": [
|
|
219
|
+
"cold-start",
|
|
220
|
+
"dynamic-allocation"
|
|
221
|
+
],
|
|
222
|
+
"store": "tuning",
|
|
223
|
+
"slug": "cold-start"
|
|
224
|
+
},
|
|
225
|
+
{
|
|
226
|
+
"anchor": "bottleneck-utilization",
|
|
227
|
+
"section": "Detector Catalog",
|
|
228
|
+
"title": "Executor Utilization",
|
|
229
|
+
"keywords": [
|
|
230
|
+
"executor-utilization",
|
|
231
|
+
"under-partitioning",
|
|
232
|
+
"over-provisioning"
|
|
233
|
+
],
|
|
234
|
+
"store": "tuning",
|
|
235
|
+
"slug": "utilization"
|
|
236
|
+
},
|
|
237
|
+
{
|
|
238
|
+
"anchor": "bottleneck-slow-host",
|
|
239
|
+
"section": "Detector Catalog",
|
|
240
|
+
"title": "Slow Host",
|
|
241
|
+
"keywords": [
|
|
242
|
+
"slow-host",
|
|
243
|
+
"speculative-execution"
|
|
244
|
+
],
|
|
245
|
+
"store": "tuning",
|
|
246
|
+
"slug": "slow-host"
|
|
247
|
+
},
|
|
248
|
+
{
|
|
249
|
+
"anchor": "bottleneck-failures",
|
|
250
|
+
"section": "Detector Catalog",
|
|
251
|
+
"title": "Task Failures",
|
|
252
|
+
"keywords": [
|
|
253
|
+
"taskendreason",
|
|
254
|
+
"executorlostfailure",
|
|
255
|
+
"exceptionfailure"
|
|
256
|
+
],
|
|
257
|
+
"store": "tuning",
|
|
258
|
+
"slug": "failures"
|
|
259
|
+
},
|
|
260
|
+
{
|
|
261
|
+
"anchor": "bottleneck-straggler",
|
|
262
|
+
"section": "Detector Catalog",
|
|
263
|
+
"title": "Stragglers",
|
|
264
|
+
"keywords": [
|
|
265
|
+
"straggler",
|
|
266
|
+
"speculative-execution"
|
|
267
|
+
],
|
|
268
|
+
"store": "tuning",
|
|
269
|
+
"slug": "straggler"
|
|
270
|
+
},
|
|
271
|
+
{
|
|
272
|
+
"anchor": "bottleneck-retry-waste",
|
|
273
|
+
"section": "Detector Catalog",
|
|
274
|
+
"title": "Retry Waste",
|
|
275
|
+
"keywords": [
|
|
276
|
+
"retry-waste",
|
|
277
|
+
"fetch-failure"
|
|
278
|
+
],
|
|
279
|
+
"store": "tuning",
|
|
280
|
+
"slug": "retry-waste"
|
|
281
|
+
},
|
|
282
|
+
{
|
|
283
|
+
"anchor": "bottleneck-tiny-tasks",
|
|
284
|
+
"section": "Detector Catalog",
|
|
285
|
+
"title": "Tiny Tasks",
|
|
286
|
+
"keywords": [
|
|
287
|
+
"tiny-tasks",
|
|
288
|
+
"scheduling-overhead"
|
|
289
|
+
],
|
|
290
|
+
"store": "tuning",
|
|
291
|
+
"slug": "tiny-tasks"
|
|
292
|
+
},
|
|
293
|
+
{
|
|
294
|
+
"anchor": "bottleneck-job-failure-rate",
|
|
295
|
+
"section": "Detector Catalog",
|
|
296
|
+
"title": "Job Failure Rate",
|
|
297
|
+
"keywords": [
|
|
298
|
+
"job-failure-rate",
|
|
299
|
+
"retry-budget"
|
|
300
|
+
],
|
|
301
|
+
"store": "tuning",
|
|
302
|
+
"slug": "job-failure-rate"
|
|
303
|
+
},
|
|
304
|
+
{
|
|
305
|
+
"anchor": "bottleneck-memory-utilization",
|
|
306
|
+
"section": "Detector Catalog",
|
|
307
|
+
"title": "Memory Utilization",
|
|
308
|
+
"keywords": [
|
|
309
|
+
"memory-utilization",
|
|
310
|
+
"idle-timeout"
|
|
311
|
+
],
|
|
312
|
+
"store": "tuning",
|
|
313
|
+
"slug": "memory-utilization"
|
|
314
|
+
},
|
|
315
|
+
{
|
|
316
|
+
"anchor": "bottleneck-duplicate-plan-subtree",
|
|
317
|
+
"section": "Detector Catalog",
|
|
318
|
+
"title": "Duplicate Plan Subtree",
|
|
319
|
+
"keywords": [
|
|
320
|
+
"duplicate-plan-subtree",
|
|
321
|
+
"exchange-reuse"
|
|
322
|
+
],
|
|
323
|
+
"store": "tuning",
|
|
324
|
+
"slug": "duplicate-plan-subtree"
|
|
325
|
+
},
|
|
326
|
+
{
|
|
327
|
+
"anchor": "bottleneck-small-files",
|
|
328
|
+
"section": "Detector Catalog",
|
|
329
|
+
"title": "Small Files",
|
|
330
|
+
"keywords": [
|
|
331
|
+
"small-files",
|
|
332
|
+
"advisorypartitionsizeinbytes"
|
|
333
|
+
],
|
|
334
|
+
"store": "tuning",
|
|
335
|
+
"slug": "small-files"
|
|
336
|
+
},
|
|
337
|
+
{
|
|
338
|
+
"anchor": "bottleneck-broadcast-sizing",
|
|
339
|
+
"section": "Detector Catalog",
|
|
340
|
+
"title": "Broadcast Sizing",
|
|
341
|
+
"keywords": [
|
|
342
|
+
"broadcast-threshold",
|
|
343
|
+
"driver-collection"
|
|
344
|
+
],
|
|
345
|
+
"store": "tuning",
|
|
346
|
+
"slug": "broadcast-sizing"
|
|
347
|
+
},
|
|
348
|
+
{
|
|
349
|
+
"anchor": "metrics",
|
|
350
|
+
"section": "Reference",
|
|
351
|
+
"title": "Metrics Glossary",
|
|
352
|
+
"keywords": [
|
|
353
|
+
"metrics-glossary",
|
|
354
|
+
"event-log"
|
|
355
|
+
],
|
|
356
|
+
"store": "chapters",
|
|
357
|
+
"slug": "14-metrics"
|
|
358
|
+
},
|
|
359
|
+
{
|
|
360
|
+
"anchor": "config",
|
|
361
|
+
"section": "Reference",
|
|
362
|
+
"title": "Spark Config Quick-Reference",
|
|
363
|
+
"keywords": [
|
|
364
|
+
"spark-config",
|
|
365
|
+
"gc-flags"
|
|
366
|
+
],
|
|
367
|
+
"store": "chapters",
|
|
368
|
+
"slug": "15-config"
|
|
369
|
+
}
|
|
370
|
+
]
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
### `CACHE`: Caching opportunity {#cache}
|
|
2
|
+
|
|
3
|
+
A reusable dataset (re-read via the same SQL relation more than once) may be
|
|
4
|
+
worth persisting between stages. Self-flags a confidence that scales with
|
|
5
|
+
how many executions reuse the same relation: reuse is only inferred, from
|
|
6
|
+
plan-scan identity across SQL executions, so confirm the reads really do
|
|
7
|
+
hit the same data before you cache anything.
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
### `CFG`: Configuration audit {#cfg}
|
|
2
|
+
|
|
3
|
+
Flags configuration settings that may cause reliability or efficiency
|
|
4
|
+
problems, independent of any one stage's behavior. Four properties are
|
|
5
|
+
audited today:
|
|
6
|
+
|
|
7
|
+
- `spark.shuffle.service.enabled`: flagged when dynamic allocation is on
|
|
8
|
+
but the external shuffle service is off, since shuffle data won't survive
|
|
9
|
+
executor removal.
|
|
10
|
+
- `spark.dynamicAllocation.maxExecutors`: flagged for inverted bounds or a
|
|
11
|
+
missing upper bound.
|
|
12
|
+
- `spark.serializer`: flagged when still on the default Java serializer;
|
|
13
|
+
`org.apache.spark.serializer.KryoSerializer` is faster and produces
|
|
14
|
+
smaller buffers.
|
|
15
|
+
- `spark.executor.memoryOverhead`: flagged when set below a safe floor.
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
### `CHRN`: Autoscaling churn {#chrn}
|
|
2
|
+
|
|
3
|
+
Executors are stood up and torn down again before they can do useful work:
|
|
4
|
+
re-provisioning churn rather than normal scale-down. Raise
|
|
5
|
+
`spark.dynamicAllocation.executorIdleTimeout`, or widen the
|
|
6
|
+
`minExecutors`/`maxExecutors` bounds to reduce flapping. Self-flags a
|
|
7
|
+
confidence that scales with how far the short-lived-executor share sits
|
|
8
|
+
past the threshold: these thresholds are still a design spike, not yet
|
|
9
|
+
validated against real-world runs.
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
### `INCMP`: Incomplete run {#incmp}
|
|
2
|
+
|
|
3
|
+
This event log never recorded an `ApplicationEnd` event: capture stopped
|
|
4
|
+
before the run finished (an in-flight job, a rotated-away log, or a
|
|
5
|
+
cut-short capture). Every other finding and metric on the board reflects
|
|
6
|
+
only what was captured up to that point, not the full run.
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
### `LOCAL`: Core usage locality {#local}
|
|
2
|
+
|
|
3
|
+
Tasks run without process- or node-local data placement more often than
|
|
4
|
+
expected. Check `spark.locality.wait` settings and executor/data colocation.
|
|
5
|
+
Self-flags a confidence that scales with the non-local ratio and sample
|
|
6
|
+
size: the thresholds are our own noise floor for this metric.
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
### `MEM`: Memory utilization {#mem}
|
|
2
|
+
|
|
3
|
+
Executor memory or core capacity may be over- or under-provisioned. Some
|
|
4
|
+
detail here needs `spark.eventLog.logStageExecutorMetrics=true` on the run
|
|
5
|
+
being analyzed; without it, per-executor memory usage can't be broken down.
|
|
6
|
+
Review `spark.executor.memory` and executor count if allocated memory sat
|
|
7
|
+
largely idle over the run. That idle-memory variant self-flags a confidence
|
|
8
|
+
that scales with how far the estimated waste sits past a 1.5x buffer: it
|
|
9
|
+
estimates waste from allocated-versus-used memory-time. Check it against
|
|
10
|
+
the Spark UI before resizing anything.
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
### `PLAN`: Plan advisor {#plan}
|
|
2
|
+
|
|
3
|
+
Flags patterns in the SQL execution plan worth reviewing. Four checks share
|
|
4
|
+
this tag:
|
|
5
|
+
|
|
6
|
+
- Duplicate plan subtree: the same subtree recomputed more than once in the
|
|
7
|
+
plan.
|
|
8
|
+
- Small files: reading an excessive number of small files.
|
|
9
|
+
- Under-broadcast: the smaller side of a Sort Merge Join looks well under
|
|
10
|
+
the broadcast threshold; consider a `broadcast()` hint or raising
|
|
11
|
+
`spark.sql.autoBroadcastJoinThreshold`.
|
|
12
|
+
- Over-broadcast: a broadcast exceeds the 1 GB threshold; check for a
|
|
13
|
+
misapplied broadcast hint or a misconfigured
|
|
14
|
+
`spark.sql.autoBroadcastJoinThreshold`.
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
### `SLOW`: Stage slowness {#slow}
|
|
2
|
+
|
|
3
|
+
A stage ran long overall without a more specific cause getting flagged.
|
|
4
|
+
Often a partition-count problem: raise parallelism via
|
|
5
|
+
`spark.sql.shuffle.partitions` or `spark.default.parallelism`, or check for a
|
|
6
|
+
large per-task data volume driving heavy shuffle and spill.
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
### `SPEC`: Speculation waste {#spec}
|
|
2
|
+
|
|
3
|
+
Speculative task attempts used a lot of executor time without confirming a
|
|
4
|
+
genuine straggler. Self-flags a confidence that scales with how far the
|
|
5
|
+
wasted time sits past the threshold: these thresholds are still a design
|
|
6
|
+
spike, not yet validated against real-world runs. If task durations are
|
|
7
|
+
just naturally variable rather than genuine stragglers, tune
|
|
8
|
+
`spark.speculation.multiplier`/`spark.speculation.quantile`.
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
### `SPILL`: Memory and disk spill {#spill}
|
|
2
|
+
|
|
3
|
+
Tasks are writing data out of memory, which slows execution. Two spill
|
|
4
|
+
patterns get flagged differently: skew spill, where a few heavy tasks spill
|
|
5
|
+
while most don't (rebalance partitioning), and volume spill, where most
|
|
6
|
+
tasks spill because the data genuinely exceeds available memory (add
|
|
7
|
+
partitions).
|