sparkforensics-cli 0.1.0 → 0.2.0
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.CndaAS6v.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.DNY8bVcl.js +1 -0
- package/export-template/docs/assets/chunks/VPLocalSearchBox.yJbZbsEo.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.Df2VAG9w.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.B-OsL91z.js +1 -0
- package/export-template/docs/assets/contributor-guide_architecture_board-widgets.md.B-OsL91z.lean.js +1 -0
- package/export-template/docs/assets/contributor-guide_architecture_detector-contract.md.BOeH4d1J.js +1 -0
- package/export-template/docs/assets/contributor-guide_architecture_detector-contract.md.BOeH4d1J.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.DYCDPgkh.js +1 -0
- package/export-template/docs/assets/contributor-guide_architecture_impact-estimation.md.DYCDPgkh.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.m3S3UdMk.js +1 -0
- package/export-template/docs/assets/contributor-guide_architecture_state-and-history.md.m3S3UdMk.lean.js +1 -0
- package/export-template/docs/assets/contributor-guide_architecture_widget-rendering.md.DbqPf2OT.js +1 -0
- package/export-template/docs/assets/contributor-guide_architecture_widget-rendering.md.DbqPf2OT.lean.js +1 -0
- package/export-template/docs/assets/contributor-guide_architecture_worker-protocol.md.B93qJ_tT.js +6 -0
- package/export-template/docs/assets/contributor-guide_architecture_worker-protocol.md.B93qJ_tT.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.DXOMCXxn.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.sU3KGarf.js +1 -0
- package/export-template/docs/assets/user-guide_alternative-log-retrieval.md.sU3KGarf.lean.js +1 -0
- package/export-template/docs/assets/user-guide_getting-started.md.DtEM37MK.js +3 -0
- package/export-template/docs/assets/user-guide_getting-started.md.DtEM37MK.lean.js +1 -0
- package/export-template/docs/assets/user-guide_mcp-tools.md.C8MiIu7F.js +125 -0
- package/export-template/docs/assets/user-guide_mcp-tools.md.C8MiIu7F.lean.js +1 -0
- package/export-template/docs/assets/user-guide_run-comparison.md.S0TWWmLY.js +1 -0
- package/export-template/docs/assets/user-guide_run-comparison.md.S0TWWmLY.lean.js +1 -0
- package/export-template/docs/assets/user-guide_understanding-findings.md.D0R_Y-R2.js +1 -0
- package/export-template/docs/assets/user-guide_understanding-findings.md.D0R_Y-R2.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 +115 -0
- package/export-template/parser-worker-QqyEE4m9.js +64 -0
- package/package.json +16 -3
- 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 +256 -375
- 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 +6 -0
- package/vendor-core/docs-content/detection/cfg.md +15 -0
- package/vendor-core/docs-content/detection/chrn.md +7 -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 +7 -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 +7 -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 +72 -122
- 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 +18 -27
- 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 +65 -70
- 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,6 @@
|
|
|
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-flagged low-confidence: reuse is only
|
|
5
|
+
inferred, from plan-scan identity across SQL executions, so confirm the reads
|
|
6
|
+
really do 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,7 @@
|
|
|
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-flagged
|
|
7
|
+
low-confidence: a design spike, not yet 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,7 @@
|
|
|
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-flagged low-confidence: the non-local-ratio thresholds are unvalidated
|
|
6
|
+
design-spike values, and no external tool publishes an equivalent metric to
|
|
7
|
+
calibrate them against.
|
|
@@ -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 is self-flagged
|
|
8
|
+
low-confidence: it estimates waste from allocated-versus-used memory-time
|
|
9
|
+
against an unverified 1.5x buffer. 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,7 @@
|
|
|
1
|
+
### `SPEC`: Speculation waste {#spec}
|
|
2
|
+
|
|
3
|
+
Speculative task attempts used a lot of executor time without confirming a
|
|
4
|
+
genuine straggler. Self-flagged low-confidence: a design spike, not yet
|
|
5
|
+
validated against real-world runs. If task durations are just naturally
|
|
6
|
+
variable rather than genuine stragglers, tune
|
|
7
|
+
`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).
|