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.
Files changed (361) hide show
  1. package/README.md +6 -0
  2. package/bin/sparkforensics-analyze.mjs +113 -48
  3. package/export-template/docs/404.html +25 -0
  4. package/export-template/docs/assets/app.DQTZyGL1.js +1 -0
  5. package/export-template/docs/assets/aqe-loop.IwQSATHw.svg +1 -0
  6. package/export-template/docs/assets/aqe-loop.dark.DGbaxqJE.svg +1 -0
  7. package/export-template/docs/assets/broadcast-vs-shuffle.Db4WY1XK.svg +1 -0
  8. package/export-template/docs/assets/broadcast-vs-shuffle.dark.C7Bxs0mG.svg +1 -0
  9. package/export-template/docs/assets/cache-lifecycle.dark.B-hS7AgU.svg +1 -0
  10. package/export-template/docs/assets/cache-lifecycle.rEOVYQNU.svg +1 -0
  11. package/export-template/docs/assets/chunks/@localSearchIndexroot.DppnXnDE.js +1 -0
  12. package/export-template/docs/assets/chunks/VPLocalSearchBox.BkBIPFs6.js +9 -0
  13. package/export-template/docs/assets/chunks/duplicate-plan-subtree.dark.Cdp70QhV.js +1 -0
  14. package/export-template/docs/assets/chunks/framework.DSg0KOwT.js +20 -0
  15. package/export-template/docs/assets/chunks/retry-escalation-ladder.dark.DHipdJgZ.js +1 -0
  16. package/export-template/docs/assets/chunks/theme.DP0u1AUq.js +2 -0
  17. package/export-template/docs/assets/cold-start-timeline.DxC_Sc7w.svg +1 -0
  18. package/export-template/docs/assets/cold-start-timeline.dark.CZ17YcAG.svg +1 -0
  19. package/export-template/docs/assets/columnar-layout.PghGeOEA.svg +1 -0
  20. package/export-template/docs/assets/columnar-layout.dark.BVNlz0ff.svg +1 -0
  21. package/export-template/docs/assets/container-memory.DIO0AnIm.svg +1 -0
  22. package/export-template/docs/assets/container-memory.dark.CP-5zuCl.svg +1 -0
  23. package/export-template/docs/assets/contributor-guide_architecture_board-widgets.md.CWpj01WU.js +1 -0
  24. package/export-template/docs/assets/contributor-guide_architecture_board-widgets.md.CWpj01WU.lean.js +1 -0
  25. package/export-template/docs/assets/contributor-guide_architecture_detector-contract.md.CgzUsQ6W.js +1 -0
  26. package/export-template/docs/assets/contributor-guide_architecture_detector-contract.md.CgzUsQ6W.lean.js +1 -0
  27. package/export-template/docs/assets/contributor-guide_architecture_drill-down.md.BtPdlM7r.js +1 -0
  28. package/export-template/docs/assets/contributor-guide_architecture_drill-down.md.BtPdlM7r.lean.js +1 -0
  29. package/export-template/docs/assets/contributor-guide_architecture_impact-estimation.md.CooslVJt.js +1 -0
  30. package/export-template/docs/assets/contributor-guide_architecture_impact-estimation.md.CooslVJt.lean.js +1 -0
  31. package/export-template/docs/assets/contributor-guide_architecture_index.md.3TO9ic6w.js +1 -0
  32. package/export-template/docs/assets/contributor-guide_architecture_index.md.3TO9ic6w.lean.js +1 -0
  33. package/export-template/docs/assets/contributor-guide_architecture_overview.md.CehiRmGn.js +1 -0
  34. package/export-template/docs/assets/contributor-guide_architecture_overview.md.CehiRmGn.lean.js +1 -0
  35. package/export-template/docs/assets/contributor-guide_architecture_state-and-history.md.C-xxn0q7.js +1 -0
  36. package/export-template/docs/assets/contributor-guide_architecture_state-and-history.md.C-xxn0q7.lean.js +1 -0
  37. package/export-template/docs/assets/contributor-guide_architecture_widget-rendering.md.R27gQrgY.js +1 -0
  38. package/export-template/docs/assets/contributor-guide_architecture_widget-rendering.md.R27gQrgY.lean.js +1 -0
  39. package/export-template/docs/assets/contributor-guide_architecture_worker-protocol.md.IbnfNrV3.js +6 -0
  40. package/export-template/docs/assets/contributor-guide_architecture_worker-protocol.md.IbnfNrV3.lean.js +1 -0
  41. package/export-template/docs/assets/contributor-guide_contributing.md.CvRsdr6J.js +1 -0
  42. package/export-template/docs/assets/contributor-guide_contributing.md.CvRsdr6J.lean.js +1 -0
  43. package/export-template/docs/assets/contributor-guide_development-setup.md.DvAN_9mK.js +12 -0
  44. package/export-template/docs/assets/contributor-guide_development-setup.md.DvAN_9mK.lean.js +1 -0
  45. package/export-template/docs/assets/contributor-guide_testing.md.6rIKqSyY.js +1 -0
  46. package/export-template/docs/assets/contributor-guide_testing.md.6rIKqSyY.lean.js +1 -0
  47. package/export-template/docs/assets/dag-stages.DSz_S937.svg +1 -0
  48. package/export-template/docs/assets/dag-stages.dark.F72UzxH4.svg +1 -0
  49. package/export-template/docs/assets/driver-executor.D5pQ7YN1.svg +1 -0
  50. package/export-template/docs/assets/driver-executor.dark.BmX9cPvh.svg +1 -0
  51. package/export-template/docs/assets/duplicate-plan-subtree.B4cvN6fj.svg +1 -0
  52. package/export-template/docs/assets/duplicate-plan-subtree.dark.Dw8wS0Ag.svg +1 -0
  53. package/export-template/docs/assets/index.md.CHJVslga.js +1 -0
  54. package/export-template/docs/assets/index.md.CHJVslga.lean.js +1 -0
  55. package/export-template/docs/assets/inter-italic-cyrillic-ext.r48I6akx.woff2 +0 -0
  56. package/export-template/docs/assets/inter-italic-cyrillic.By2_1cv3.woff2 +0 -0
  57. package/export-template/docs/assets/inter-italic-greek-ext.1u6EdAuj.woff2 +0 -0
  58. package/export-template/docs/assets/inter-italic-greek.DJ8dCoTZ.woff2 +0 -0
  59. package/export-template/docs/assets/inter-italic-latin-ext.CN1xVJS-.woff2 +0 -0
  60. package/export-template/docs/assets/inter-italic-latin.C2AdPX0b.woff2 +0 -0
  61. package/export-template/docs/assets/inter-italic-vietnamese.BSbpV94h.woff2 +0 -0
  62. package/export-template/docs/assets/inter-roman-cyrillic-ext.BBPuwvHQ.woff2 +0 -0
  63. package/export-template/docs/assets/inter-roman-cyrillic.C5lxZ8CY.woff2 +0 -0
  64. package/export-template/docs/assets/inter-roman-greek-ext.CqjqNYQ-.woff2 +0 -0
  65. package/export-template/docs/assets/inter-roman-greek.BBVDIX6e.woff2 +0 -0
  66. package/export-template/docs/assets/inter-roman-latin-ext.4ZJIpNVo.woff2 +0 -0
  67. package/export-template/docs/assets/inter-roman-latin.Di8DUHzh.woff2 +0 -0
  68. package/export-template/docs/assets/inter-roman-vietnamese.BjW4sHH5.woff2 +0 -0
  69. package/export-template/docs/assets/join-strategy.C_FvrCEo.svg +1 -0
  70. package/export-template/docs/assets/join-strategy.dark.ChMLnNII.svg +1 -0
  71. package/export-template/docs/assets/memory-borrowing.BqQRJg0u.svg +1 -0
  72. package/export-template/docs/assets/memory-borrowing.dark.Yhh20O9C.svg +1 -0
  73. package/export-template/docs/assets/memory-regions.XHvO7jHG.svg +1 -0
  74. package/export-template/docs/assets/memory-regions.dark.D4TP9_08.svg +1 -0
  75. package/export-template/docs/assets/repartition-vs-coalesce.BovLRrpj.svg +1 -0
  76. package/export-template/docs/assets/repartition-vs-coalesce.dark.BhAczKZQ.svg +1 -0
  77. package/export-template/docs/assets/retry-escalation-ladder.DyTKJJmZ.svg +1 -0
  78. package/export-template/docs/assets/retry-escalation-ladder.dark.BdsabtU3.svg +1 -0
  79. package/export-template/docs/assets/shuffle-map-reduce.KuOEZVmg.svg +1 -0
  80. package/export-template/docs/assets/shuffle-map-reduce.dark.BgQZnFSb.svg +1 -0
  81. package/export-template/docs/assets/spill-classification.BU2euYDO.svg +1 -0
  82. package/export-template/docs/assets/spill-classification.dark.D7i1M40d.svg +1 -0
  83. package/export-template/docs/assets/style.DSixAiZE.css +1 -0
  84. package/export-template/docs/assets/tuning-reference_anti-patterns.md.Df1YMIHu.js +1 -0
  85. package/export-template/docs/assets/tuning-reference_anti-patterns.md.Df1YMIHu.lean.js +1 -0
  86. package/export-template/docs/assets/tuning-reference_aqe.md.BIsCtLzm.js +1 -0
  87. package/export-template/docs/assets/tuning-reference_aqe.md.BIsCtLzm.lean.js +1 -0
  88. package/export-template/docs/assets/tuning-reference_bottleneck-broadcast-sizing.md.CEstB3Ia.js +1 -0
  89. package/export-template/docs/assets/tuning-reference_bottleneck-broadcast-sizing.md.CEstB3Ia.lean.js +1 -0
  90. package/export-template/docs/assets/tuning-reference_bottleneck-cold-start.md.CEuy-72y.js +7 -0
  91. package/export-template/docs/assets/tuning-reference_bottleneck-cold-start.md.CEuy-72y.lean.js +1 -0
  92. package/export-template/docs/assets/tuning-reference_bottleneck-duplicate-plan-subtree.md.CIohQDfn.js +1 -0
  93. package/export-template/docs/assets/tuning-reference_bottleneck-duplicate-plan-subtree.md.CIohQDfn.lean.js +1 -0
  94. package/export-template/docs/assets/tuning-reference_bottleneck-failures.md.4z5BXGJ2.js +6 -0
  95. package/export-template/docs/assets/tuning-reference_bottleneck-failures.md.4z5BXGJ2.lean.js +1 -0
  96. package/export-template/docs/assets/tuning-reference_bottleneck-gc.md.DSxzZRK7.js +6 -0
  97. package/export-template/docs/assets/tuning-reference_bottleneck-gc.md.DSxzZRK7.lean.js +1 -0
  98. package/export-template/docs/assets/tuning-reference_bottleneck-job-failure-rate.md.BaJl__1W.js +8 -0
  99. package/export-template/docs/assets/tuning-reference_bottleneck-job-failure-rate.md.BaJl__1W.lean.js +1 -0
  100. package/export-template/docs/assets/tuning-reference_bottleneck-memory-utilization.md.DbP-SJZc.js +7 -0
  101. package/export-template/docs/assets/tuning-reference_bottleneck-memory-utilization.md.DbP-SJZc.lean.js +1 -0
  102. package/export-template/docs/assets/tuning-reference_bottleneck-retry-waste.md.D5JMjVOt.js +1 -0
  103. package/export-template/docs/assets/tuning-reference_bottleneck-retry-waste.md.D5JMjVOt.lean.js +1 -0
  104. package/export-template/docs/assets/tuning-reference_bottleneck-shuffle.md.CM-nTmIH.js +12 -0
  105. package/export-template/docs/assets/tuning-reference_bottleneck-shuffle.md.CM-nTmIH.lean.js +1 -0
  106. package/export-template/docs/assets/tuning-reference_bottleneck-skew.md.BdUwiDhn.js +14 -0
  107. package/export-template/docs/assets/tuning-reference_bottleneck-skew.md.BdUwiDhn.lean.js +1 -0
  108. package/export-template/docs/assets/tuning-reference_bottleneck-slow-host.md.BlIo6UDW.js +7 -0
  109. package/export-template/docs/assets/tuning-reference_bottleneck-slow-host.md.BlIo6UDW.lean.js +1 -0
  110. package/export-template/docs/assets/tuning-reference_bottleneck-small-files.md.B8kloyx8.js +5 -0
  111. package/export-template/docs/assets/tuning-reference_bottleneck-small-files.md.B8kloyx8.lean.js +1 -0
  112. package/export-template/docs/assets/tuning-reference_bottleneck-spill.md.PNH7mITt.js +6 -0
  113. package/export-template/docs/assets/tuning-reference_bottleneck-spill.md.PNH7mITt.lean.js +1 -0
  114. package/export-template/docs/assets/tuning-reference_bottleneck-straggler.md.DY36fHN5.js +7 -0
  115. package/export-template/docs/assets/tuning-reference_bottleneck-straggler.md.DY36fHN5.lean.js +1 -0
  116. package/export-template/docs/assets/tuning-reference_bottleneck-tiny-tasks.md.QTV7O8kU.js +8 -0
  117. package/export-template/docs/assets/tuning-reference_bottleneck-tiny-tasks.md.QTV7O8kU.lean.js +1 -0
  118. package/export-template/docs/assets/tuning-reference_bottleneck-utilization.md.DTiueZC3.js +5 -0
  119. package/export-template/docs/assets/tuning-reference_bottleneck-utilization.md.DTiueZC3.lean.js +1 -0
  120. package/export-template/docs/assets/tuning-reference_caching.md.B7aQ8asB.js +1 -0
  121. package/export-template/docs/assets/tuning-reference_caching.md.B7aQ8asB.lean.js +1 -0
  122. package/export-template/docs/assets/tuning-reference_cluster-config.md.ZVmDGsQ3.js +1 -0
  123. package/export-template/docs/assets/tuning-reference_cluster-config.md.ZVmDGsQ3.lean.js +1 -0
  124. package/export-template/docs/assets/tuning-reference_config.md.UvveiWG3.js +1 -0
  125. package/export-template/docs/assets/tuning-reference_config.md.UvveiWG3.lean.js +1 -0
  126. package/export-template/docs/assets/tuning-reference_data-formats.md.bjCAWH3N.js +1 -0
  127. package/export-template/docs/assets/tuning-reference_data-formats.md.bjCAWH3N.lean.js +1 -0
  128. package/export-template/docs/assets/tuning-reference_index.md.BQ_NooMV.js +1 -0
  129. package/export-template/docs/assets/tuning-reference_index.md.BQ_NooMV.lean.js +1 -0
  130. package/export-template/docs/assets/tuning-reference_intro.md.CobD-lGB.js +1 -0
  131. package/export-template/docs/assets/tuning-reference_intro.md.CobD-lGB.lean.js +1 -0
  132. package/export-template/docs/assets/tuning-reference_joins.md.BtKs_CuW.js +1 -0
  133. package/export-template/docs/assets/tuning-reference_joins.md.BtKs_CuW.lean.js +1 -0
  134. package/export-template/docs/assets/tuning-reference_memory-model.md.DhT-n4y3.js +1 -0
  135. package/export-template/docs/assets/tuning-reference_memory-model.md.DhT-n4y3.lean.js +1 -0
  136. package/export-template/docs/assets/tuning-reference_metrics.md.mLOh7Apj.js +1 -0
  137. package/export-template/docs/assets/tuning-reference_metrics.md.mLOh7Apj.lean.js +1 -0
  138. package/export-template/docs/assets/tuning-reference_partitioning.md.q0zKF_8X.js +1 -0
  139. package/export-template/docs/assets/tuning-reference_partitioning.md.q0zKF_8X.lean.js +1 -0
  140. package/export-template/docs/assets/tuning-reference_pyspark.md.DDCfvN9t.js +6 -0
  141. package/export-template/docs/assets/tuning-reference_pyspark.md.DDCfvN9t.lean.js +1 -0
  142. package/export-template/docs/assets/tuning-reference_shuffle.md.BZZ7R4Ix.js +1 -0
  143. package/export-template/docs/assets/tuning-reference_shuffle.md.BZZ7R4Ix.lean.js +1 -0
  144. package/export-template/docs/assets/tuning-reference_spark-architecture.md.Dwzm5avO.js +1 -0
  145. package/export-template/docs/assets/tuning-reference_spark-architecture.md.Dwzm5avO.lean.js +1 -0
  146. package/export-template/docs/assets/tuning-reference_table-formats.md.D6wj-2dX.js +1 -0
  147. package/export-template/docs/assets/tuning-reference_table-formats.md.D6wj-2dX.lean.js +1 -0
  148. package/export-template/docs/assets/udf-execution-models.BUFDICuG.svg +1 -0
  149. package/export-template/docs/assets/udf-execution-models.dark.YTNS6GDq.svg +1 -0
  150. package/export-template/docs/assets/user-guide_alternative-log-retrieval.md.B4tPGIal.js +1 -0
  151. package/export-template/docs/assets/user-guide_alternative-log-retrieval.md.B4tPGIal.lean.js +1 -0
  152. package/export-template/docs/assets/user-guide_getting-started.md.BJvwLEIM.js +3 -0
  153. package/export-template/docs/assets/user-guide_getting-started.md.BJvwLEIM.lean.js +1 -0
  154. package/export-template/docs/assets/user-guide_mcp-tools.md.Vi3RoflJ.js +125 -0
  155. package/export-template/docs/assets/user-guide_mcp-tools.md.Vi3RoflJ.lean.js +1 -0
  156. package/export-template/docs/assets/user-guide_run-comparison.md.CQc1aoU8.js +1 -0
  157. package/export-template/docs/assets/user-guide_run-comparison.md.CQc1aoU8.lean.js +1 -0
  158. package/export-template/docs/assets/user-guide_understanding-findings.md.DL1UDhvR.js +1 -0
  159. package/export-template/docs/assets/user-guide_understanding-findings.md.DL1UDhvR.lean.js +1 -0
  160. package/export-template/docs/contributor-guide/architecture/board-widgets.html +25 -0
  161. package/export-template/docs/contributor-guide/architecture/detector-contract.html +25 -0
  162. package/export-template/docs/contributor-guide/architecture/drill-down.html +25 -0
  163. package/export-template/docs/contributor-guide/architecture/impact-estimation.html +25 -0
  164. package/export-template/docs/contributor-guide/architecture/index.html +25 -0
  165. package/export-template/docs/contributor-guide/architecture/overview.html +25 -0
  166. package/export-template/docs/contributor-guide/architecture/state-and-history.html +25 -0
  167. package/export-template/docs/contributor-guide/architecture/widget-rendering.html +25 -0
  168. package/export-template/docs/contributor-guide/architecture/worker-protocol.html +30 -0
  169. package/export-template/docs/contributor-guide/contributing.html +25 -0
  170. package/export-template/docs/contributor-guide/development-setup.html +36 -0
  171. package/export-template/docs/contributor-guide/testing.html +25 -0
  172. package/export-template/docs/favicon.svg +4 -0
  173. package/export-template/docs/hashmap.json +1 -0
  174. package/export-template/docs/index.html +25 -0
  175. package/export-template/docs/package.json +1 -0
  176. package/export-template/docs/tuning-reference/anti-patterns.html +25 -0
  177. package/export-template/docs/tuning-reference/aqe.html +25 -0
  178. package/export-template/docs/tuning-reference/bottleneck-broadcast-sizing.html +25 -0
  179. package/export-template/docs/tuning-reference/bottleneck-cold-start.html +31 -0
  180. package/export-template/docs/tuning-reference/bottleneck-duplicate-plan-subtree.html +25 -0
  181. package/export-template/docs/tuning-reference/bottleneck-failures.html +30 -0
  182. package/export-template/docs/tuning-reference/bottleneck-gc.html +30 -0
  183. package/export-template/docs/tuning-reference/bottleneck-job-failure-rate.html +32 -0
  184. package/export-template/docs/tuning-reference/bottleneck-memory-utilization.html +31 -0
  185. package/export-template/docs/tuning-reference/bottleneck-retry-waste.html +25 -0
  186. package/export-template/docs/tuning-reference/bottleneck-shuffle.html +36 -0
  187. package/export-template/docs/tuning-reference/bottleneck-skew.html +38 -0
  188. package/export-template/docs/tuning-reference/bottleneck-slow-host.html +31 -0
  189. package/export-template/docs/tuning-reference/bottleneck-small-files.html +29 -0
  190. package/export-template/docs/tuning-reference/bottleneck-spill.html +30 -0
  191. package/export-template/docs/tuning-reference/bottleneck-straggler.html +31 -0
  192. package/export-template/docs/tuning-reference/bottleneck-tiny-tasks.html +32 -0
  193. package/export-template/docs/tuning-reference/bottleneck-utilization.html +29 -0
  194. package/export-template/docs/tuning-reference/caching.html +25 -0
  195. package/export-template/docs/tuning-reference/cluster-config.html +25 -0
  196. package/export-template/docs/tuning-reference/config.html +25 -0
  197. package/export-template/docs/tuning-reference/data-formats.html +25 -0
  198. package/export-template/docs/tuning-reference/index.html +25 -0
  199. package/export-template/docs/tuning-reference/intro.html +25 -0
  200. package/export-template/docs/tuning-reference/joins.html +25 -0
  201. package/export-template/docs/tuning-reference/memory-model.html +25 -0
  202. package/export-template/docs/tuning-reference/metrics.html +25 -0
  203. package/export-template/docs/tuning-reference/partitioning.html +25 -0
  204. package/export-template/docs/tuning-reference/pyspark.html +30 -0
  205. package/export-template/docs/tuning-reference/shuffle.html +25 -0
  206. package/export-template/docs/tuning-reference/spark-architecture.html +25 -0
  207. package/export-template/docs/tuning-reference/table-formats.html +25 -0
  208. package/export-template/docs/user-guide/alternative-log-retrieval.html +25 -0
  209. package/export-template/docs/user-guide/getting-started.html +27 -0
  210. package/export-template/docs/user-guide/mcp-tools.html +149 -0
  211. package/export-template/docs/user-guide/run-comparison.html +25 -0
  212. package/export-template/docs/user-guide/understanding-findings.html +25 -0
  213. package/export-template/docs/vp-icons.css +0 -0
  214. package/export-template/favicon.svg +4 -0
  215. package/export-template/index.html +111 -0
  216. package/export-template/parser-worker-DyjiQvfP.js +112 -0
  217. package/export-template/sample-runs/sample-run.ndjson.gz +0 -0
  218. package/package.json +20 -6
  219. package/vendor-core/analyzer.js +74 -74
  220. package/vendor-core/cli/budgets.js +13 -27
  221. package/vendor-core/cli/collect-run.js +43 -19
  222. package/vendor-core/core-count.js +25 -27
  223. package/vendor-core/core-locality-ratio.js +4 -11
  224. package/vendor-core/core-time-series.js +6 -12
  225. package/vendor-core/core-usage-locality.js +3 -4
  226. package/vendor-core/detectors.js +395 -389
  227. package/vendor-core/docs-config.js +69 -21
  228. package/vendor-core/docs-content/chapters/01-intro.md +32 -0
  229. package/vendor-core/docs-content/chapters/02-spark-architecture.md +76 -0
  230. package/vendor-core/docs-content/chapters/03-memory-model.md +73 -0
  231. package/vendor-core/docs-content/chapters/04-partitioning.md +65 -0
  232. package/vendor-core/docs-content/chapters/05-joins.md +62 -0
  233. package/vendor-core/docs-content/chapters/06-shuffle.md +59 -0
  234. package/vendor-core/docs-content/chapters/07-data-formats.md +81 -0
  235. package/vendor-core/docs-content/chapters/07b-table-formats.md +56 -0
  236. package/vendor-core/docs-content/chapters/08-caching.md +58 -0
  237. package/vendor-core/docs-content/chapters/09-pyspark.md +78 -0
  238. package/vendor-core/docs-content/chapters/10-aqe.md +167 -0
  239. package/vendor-core/docs-content/chapters/11-cluster-config.md +170 -0
  240. package/vendor-core/docs-content/chapters/12-anti-patterns.md +171 -0
  241. package/vendor-core/docs-content/chapters/14-metrics.md +87 -0
  242. package/vendor-core/docs-content/chapters/15-config.md +93 -0
  243. package/vendor-core/docs-content/chapters/nav-index.json +370 -0
  244. package/vendor-core/docs-content/detection/cache.md +7 -0
  245. package/vendor-core/docs-content/detection/cfg.md +15 -0
  246. package/vendor-core/docs-content/detection/chrn.md +9 -0
  247. package/vendor-core/docs-content/detection/cold.md +4 -0
  248. package/vendor-core/docs-content/detection/cstor.md +4 -0
  249. package/vendor-core/docs-content/detection/fail.md +5 -0
  250. package/vendor-core/docs-content/detection/gc.md +4 -0
  251. package/vendor-core/docs-content/detection/host.md +5 -0
  252. package/vendor-core/docs-content/detection/incmp.md +6 -0
  253. package/vendor-core/docs-content/detection/jobs.md +4 -0
  254. package/vendor-core/docs-content/detection/local.md +6 -0
  255. package/vendor-core/docs-content/detection/mem.md +10 -0
  256. package/vendor-core/docs-content/detection/part.md +5 -0
  257. package/vendor-core/docs-content/detection/plan.md +14 -0
  258. package/vendor-core/docs-content/detection/retry.md +4 -0
  259. package/vendor-core/docs-content/detection/sfail.md +5 -0
  260. package/vendor-core/docs-content/detection/shape.md +5 -0
  261. package/vendor-core/docs-content/detection/shfl.md +4 -0
  262. package/vendor-core/docs-content/detection/skew.md +6 -0
  263. package/vendor-core/docs-content/detection/slow.md +6 -0
  264. package/vendor-core/docs-content/detection/spec.md +8 -0
  265. package/vendor-core/docs-content/detection/spill.md +7 -0
  266. package/vendor-core/docs-content/detection/strag.md +5 -0
  267. package/vendor-core/docs-content/detection/tiny.md +4 -0
  268. package/vendor-core/docs-content/detection/util.md +4 -0
  269. package/vendor-core/docs-content/diagrams/aqe-loop.dark.svg +1 -0
  270. package/vendor-core/docs-content/diagrams/aqe-loop.svg +1 -0
  271. package/vendor-core/docs-content/diagrams/broadcast-vs-shuffle.dark.svg +1 -0
  272. package/vendor-core/docs-content/diagrams/broadcast-vs-shuffle.svg +1 -0
  273. package/vendor-core/docs-content/diagrams/cache-lifecycle.dark.svg +1 -0
  274. package/vendor-core/docs-content/diagrams/cache-lifecycle.svg +1 -0
  275. package/vendor-core/docs-content/diagrams/cold-start-timeline.dark.svg +1 -0
  276. package/vendor-core/docs-content/diagrams/cold-start-timeline.svg +1 -0
  277. package/vendor-core/docs-content/diagrams/columnar-layout.dark.svg +1 -0
  278. package/vendor-core/docs-content/diagrams/columnar-layout.svg +1 -0
  279. package/vendor-core/docs-content/diagrams/container-memory.dark.svg +1 -0
  280. package/vendor-core/docs-content/diagrams/container-memory.svg +1 -0
  281. package/vendor-core/docs-content/diagrams/dag-stages.dark.svg +1 -0
  282. package/vendor-core/docs-content/diagrams/dag-stages.svg +1 -0
  283. package/vendor-core/docs-content/diagrams/driver-executor.dark.svg +1 -0
  284. package/vendor-core/docs-content/diagrams/driver-executor.svg +1 -0
  285. package/vendor-core/docs-content/diagrams/duplicate-plan-subtree.dark.svg +1 -0
  286. package/vendor-core/docs-content/diagrams/duplicate-plan-subtree.svg +1 -0
  287. package/vendor-core/docs-content/diagrams/join-strategy.dark.svg +1 -0
  288. package/vendor-core/docs-content/diagrams/join-strategy.svg +1 -0
  289. package/vendor-core/docs-content/diagrams/memory-borrowing.dark.svg +1 -0
  290. package/vendor-core/docs-content/diagrams/memory-borrowing.svg +1 -0
  291. package/vendor-core/docs-content/diagrams/memory-regions.dark.svg +1 -0
  292. package/vendor-core/docs-content/diagrams/memory-regions.svg +1 -0
  293. package/vendor-core/docs-content/diagrams/repartition-vs-coalesce.dark.svg +1 -0
  294. package/vendor-core/docs-content/diagrams/repartition-vs-coalesce.svg +1 -0
  295. package/vendor-core/docs-content/diagrams/retry-escalation-ladder.dark.svg +1 -0
  296. package/vendor-core/docs-content/diagrams/retry-escalation-ladder.svg +1 -0
  297. package/vendor-core/docs-content/diagrams/shuffle-map-reduce.dark.svg +1 -0
  298. package/vendor-core/docs-content/diagrams/shuffle-map-reduce.svg +1 -0
  299. package/vendor-core/docs-content/diagrams/spill-classification.dark.svg +1 -0
  300. package/vendor-core/docs-content/diagrams/spill-classification.svg +1 -0
  301. package/vendor-core/docs-content/diagrams/udf-execution-models.dark.svg +1 -0
  302. package/vendor-core/docs-content/diagrams/udf-execution-models.svg +1 -0
  303. package/vendor-core/docs-content/tuning/broadcast-sizing.md +78 -0
  304. package/vendor-core/docs-content/tuning/cold-start.md +81 -0
  305. package/vendor-core/docs-content/tuning/duplicate-plan-subtree.md +45 -0
  306. package/vendor-core/docs-content/tuning/failures.md +124 -0
  307. package/vendor-core/docs-content/tuning/gc.md +110 -0
  308. package/vendor-core/docs-content/tuning/job-failure-rate.md +101 -0
  309. package/vendor-core/docs-content/tuning/memory-utilization.md +58 -0
  310. package/vendor-core/docs-content/tuning/retry-waste.md +90 -0
  311. package/vendor-core/docs-content/tuning/shuffle.md +154 -0
  312. package/vendor-core/docs-content/tuning/skew.md +123 -0
  313. package/vendor-core/docs-content/tuning/slow-host.md +117 -0
  314. package/vendor-core/docs-content/tuning/small-files.md +99 -0
  315. package/vendor-core/docs-content/tuning/spill.md +114 -0
  316. package/vendor-core/docs-content/tuning/straggler.md +103 -0
  317. package/vendor-core/docs-content/tuning/tiny-tasks.md +94 -0
  318. package/vendor-core/docs-content/tuning/utilization.md +90 -0
  319. package/vendor-core/docs-site-config.js +10 -17
  320. package/vendor-core/efficiency-model.js +7 -13
  321. package/vendor-core/etl-phases.js +3 -5
  322. package/vendor-core/event-handlers.js +232 -134
  323. package/vendor-core/event-schemas.js +48 -114
  324. package/vendor-core/evidence-availability.js +5 -10
  325. package/vendor-core/evidence-report.js +73 -123
  326. package/vendor-core/export-data.js +48 -0
  327. package/vendor-core/finding-action-label.js +4 -10
  328. package/vendor-core/finding-filter-predicate.js +3 -7
  329. package/vendor-core/finding-generic-recommendation.js +112 -0
  330. package/vendor-core/finding-names.js +51 -0
  331. package/vendor-core/format-utils.js +112 -38
  332. package/vendor-core/impact-band.js +18 -24
  333. package/vendor-core/impact-estimator.js +38 -74
  334. package/vendor-core/ingest.js +7 -13
  335. package/vendor-core/job-groups.js +3 -6
  336. package/vendor-core/list-runs.js +278 -0
  337. package/vendor-core/load-vendored.js +6 -12
  338. package/vendor-core/log-header-peek.js +81 -0
  339. package/vendor-core/lz4-block.js +4 -6
  340. package/vendor-core/mcp-server-factory.js +38 -8
  341. package/vendor-core/mcp-tools.js +105 -76
  342. package/vendor-core/model-assembler.js +8 -16
  343. package/vendor-core/occupancy.js +5 -9
  344. package/vendor-core/parser-worker.js +20 -29
  345. package/vendor-core/plan-dot.js +2 -5
  346. package/vendor-core/plan-duration-attribution.js +78 -29
  347. package/vendor-core/plan-graph-model.js +126 -69
  348. package/vendor-core/plan-node-detail.js +31 -17
  349. package/vendor-core/plan-summary.js +19 -8
  350. package/vendor-core/recommendation-rollup.js +35 -39
  351. package/vendor-core/redact.js +72 -16
  352. package/vendor-core/rolling-log-reassembly.js +4 -6
  353. package/vendor-core/run-comparison.js +86 -72
  354. package/vendor-core/scaling-sim.js +5 -7
  355. package/vendor-core/session-snapshot.js +1 -1
  356. package/vendor-core/shs-fetch.js +4 -6
  357. package/vendor-core/shs-load.js +9 -13
  358. package/vendor-core/shs-request.js +1 -1
  359. package/vendor-core/stage-quantiles.js +14 -0
  360. package/vendor-core/types.js +78 -18
  361. 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,4 @@
1
+ ### `COLD`: Executor cold start {#cold}
2
+
3
+ New executors take time to become available for work. Pre-warm the cluster,
4
+ or use dynamic allocation.
@@ -0,0 +1,4 @@
1
+ ### `CSTOR`: Cache storage {#cstor}
2
+
3
+ A persisted dataset is not fully cached in memory, or is spilling to disk.
4
+ Raise executor memory, or shrink the cached dataset.
@@ -0,0 +1,5 @@
1
+ ### `FAIL`: Failed tasks {#fail}
2
+
3
+ Tasks fail often enough to affect the stage. Failed tasks point to executor
4
+ instability or data-driven errors: check driver logs for the dominant
5
+ failure reason.
@@ -0,0 +1,4 @@
1
+ ### `GC`: Garbage collection pressure {#gc}
2
+
3
+ Tasks spend an unusually large share of time reclaiming memory. Reduce
4
+ object creation: use primitive types, avoid UDFs, or raise executor memory.
@@ -0,0 +1,5 @@
1
+ ### `HOST`: Slow host {#host}
2
+
3
+ One executor is much slower than its peers. It may just hold data locality
4
+ for its tasks or carry one heavy stage, rather than a hardware fault.
5
+ Enable `spark.speculation` to relaunch a lagging task automatically.
@@ -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,4 @@
1
+ ### `JOBS`: Job failure rate {#jobs}
2
+
3
+ A large share of completed jobs did not succeed. Inspect the driver log for
4
+ the failed job(s) and the stage failures that triggered them.
@@ -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,5 @@
1
+ ### `PART`: Partition sizing {#part}
2
+
3
+ Shuffle partitions are too large, too uneven, or too few for the work. A
4
+ single shuffle partition over 5 GB, for example, will OOM or spill heavily:
5
+ repartition to break it up before the stage runs.
@@ -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,4 @@
1
+ ### `RETRY`: Retry waste {#retry}
2
+
3
+ Repeated task attempts ate into execution time even though the stage
4
+ completed. Investigate executor loss or fetch failures.
@@ -0,0 +1,5 @@
1
+ ### `SFAIL`: Failed stage {#sfail}
2
+
3
+ A stage attempt failed outright rather than losing individual tasks within
4
+ it. Inspect the driver log for the failure reason and the job that triggered
5
+ it.
@@ -0,0 +1,5 @@
1
+ ### `SHAPE`: Stage shape {#shape}
2
+
3
+ The stage has an inefficient task count, output shape, or task-to-stage
4
+ balance: for example, one straggler task taking a large fraction of the
5
+ stage's wall-clock time.
@@ -0,0 +1,4 @@
1
+ ### `SHFL`: Shuffle I/O {#shfl}
2
+
3
+ Tasks move a large amount of intermediate data between stages. Raise
4
+ `spark.sql.shuffle.partitions`, or add a broadcast join.
@@ -0,0 +1,6 @@
1
+ ### `SKEW`: Task skew {#skew}
2
+
3
+ A small number of tasks take much longer than their peers in the same
4
+ stage. For join-driven skew, enable AQE skew-join handling
5
+ (`spark.sql.adaptive.skewJoin.enabled`); otherwise salt the key or
6
+ repartition on a better key.
@@ -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).
@@ -0,0 +1,5 @@
1
+ ### `STRAG`: Straggler tasks {#strag}
2
+
3
+ A few tasks run much slower than the rest of their stage. Rule out a GC
4
+ pause or a slow shuffle fetch before assuming a hardware issue; if a skewed
5
+ key is the real cause, that's a candidate for AQE's skew-join handling.
@@ -0,0 +1,4 @@
1
+ ### `TINY`: Tiny tasks {#tiny}
2
+
3
+ Many very short tasks add scheduling overhead out of proportion to the work
4
+ each one does. Repartition to fewer, larger tasks.
@@ -0,0 +1,4 @@
1
+ ### `UTIL`: Low utilization {#util}
2
+
3
+ Allocated executors sit idle for a large share of the application run.
4
+ Consider a smaller cluster, or enable dynamic allocation.