sparkforensics-server 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.
Files changed (440) hide show
  1. package/README.md +6 -0
  2. package/index.js +40 -49
  3. package/lib/static-files.js +10 -6
  4. package/package.json +20 -1
  5. package/public/assets/AutoscalingChurn-CFJkiqxW.js +1 -0
  6. package/public/assets/CacheUtilization-kTKZBzDA.js +1 -0
  7. package/public/assets/CachingOpportunity-CU70EWcF.js +1 -0
  8. package/public/assets/ColdStart-hOI-WOvm.js +1 -0
  9. package/public/assets/ConfigAudit-B4oAksZY.js +1 -0
  10. package/public/assets/CoreUsageArea-D-dR3SQk.js +1 -0
  11. package/public/assets/Dashboard-MDhohsq4.js +4 -0
  12. package/public/assets/DuplicatePlanSubtree-54RKsfI7.js +1 -0
  13. package/public/assets/DurationHistogram-CviQyPNM.js +1 -0
  14. package/public/assets/EmptyState-v2ehFncc.js +1 -0
  15. package/public/assets/ExecutorUtilization-vHyFHgL6.js +1 -0
  16. package/public/assets/GcPressure-DINuhcno.js +1 -0
  17. package/public/assets/ImpactEstimate-C6GzFOY9.js +1 -0
  18. package/public/assets/IncompleteRun-a1kuCnU6.js +1 -0
  19. package/public/assets/JobFailures-CYwPfUhR.js +1 -0
  20. package/public/assets/MemoryUtilization-Dlfj0e_f.js +1 -0
  21. package/public/assets/OverBroadcast-BMu7Y8l9.js +1 -0
  22. package/public/assets/PartitionSizing-CvMGfSVB.js +1 -0
  23. package/public/assets/PlanExplorer-xYFme_Rx.js +1 -0
  24. package/public/assets/PlanGraphRoute-a3OGg6ET.js +1 -0
  25. package/public/assets/RetryWaste-JKRjOZ-J.js +1 -0
  26. package/public/assets/RowPagination-DypWbnic.js +1 -0
  27. package/public/assets/ShuffleIO-Mi8HiVu-.js +1 -0
  28. package/public/assets/Skew-C3iOScTC.js +1 -0
  29. package/public/assets/SlowHost-DKBg18v-.js +1 -0
  30. package/public/assets/SmallFiles-CCCB6AIu.js +1 -0
  31. package/public/assets/SpeculationWaste-DUNupw0_.js +1 -0
  32. package/public/assets/Spill-BlLdatik.js +1 -0
  33. package/public/assets/StageFailed-qtY7C7Yo.js +1 -0
  34. package/public/assets/StageFindingGroup-CoVdEZYs.js +1 -0
  35. package/public/assets/StageHeader-uDBLHgdg.js +1 -0
  36. package/public/assets/StagePill-CYCMdlIx.js +1 -0
  37. package/public/assets/StageShape-zs0mAjQJ.js +1 -0
  38. package/public/assets/StageSlowness-C7vg0u5Q.js +1 -0
  39. package/public/assets/Straggler-4BRGAQP4.js +1 -0
  40. package/public/assets/TaskFailures-CSjO23Kg.js +1 -0
  41. package/public/assets/TinyTask-6Zuovcn5.js +1 -0
  42. package/public/assets/UnderBroadcast-CePjo0ZV.js +1 -0
  43. package/public/assets/WidgetLeadSummary-DRNRVvn7.js +1 -0
  44. package/public/assets/{charts-vendor-NMqKV0H4.js → charts-vendor-Cf1-wzeH.js} +2 -2
  45. package/public/assets/downsample-D8XmJk6i.js +1 -0
  46. package/public/assets/finding-anchor-4TmpXd7j.js +1 -0
  47. package/public/assets/impact-sort-Cq6KOLqh.js +1 -0
  48. package/public/assets/inbox-DBFovbUX.js +1 -0
  49. package/public/assets/index-CHjV2-jB.js +9 -0
  50. package/public/assets/index-DMEtaP4u.css +1 -0
  51. package/public/assets/parser-worker-BMPPE37w.js +64 -0
  52. package/public/assets/plan-graph-vendor-B96a-e4N.js +7 -0
  53. package/public/assets/react-vendor-DA6opS-q.js +9 -0
  54. package/public/assets/select-D5fK-za0.js +1 -0
  55. package/public/assets/toggle-group-lbIXRG0W.js +1 -0
  56. package/public/assets/usePagedRows-CFoZrPr4.js +1 -0
  57. package/public/assets/useRecentFiles-BPGQ6XII.js +13 -0
  58. package/public/assets/useSortMode-BOPpfLhJ.js +1 -0
  59. package/public/docs/404.html +3 -3
  60. package/public/docs/assets/{app.Bxy4_HVA.js → app.BgzsaTS3.js} +1 -1
  61. package/public/docs/assets/aqe-loop.IwQSATHw.svg +1 -0
  62. package/public/docs/assets/aqe-loop.dark.DGbaxqJE.svg +1 -0
  63. package/public/docs/assets/broadcast-vs-shuffle.Db4WY1XK.svg +1 -0
  64. package/public/docs/assets/broadcast-vs-shuffle.dark.C7Bxs0mG.svg +1 -0
  65. package/public/docs/assets/cache-lifecycle.dark.B-hS7AgU.svg +1 -0
  66. package/public/docs/assets/cache-lifecycle.rEOVYQNU.svg +1 -0
  67. package/public/docs/assets/chunks/@localSearchIndexroot.PQ5JepCp.js +1 -0
  68. package/public/docs/assets/chunks/{VPLocalSearchBox.L5jNOIR3.js → VPLocalSearchBox.DOq3t-On.js} +1 -1
  69. package/public/docs/assets/chunks/duplicate-plan-subtree.dark.Cdp70QhV.js +1 -0
  70. package/public/docs/assets/chunks/{framework.CNDaxUod.js → framework.DSg0KOwT.js} +1 -1
  71. package/public/docs/assets/chunks/retry-escalation-ladder.dark.DHipdJgZ.js +1 -0
  72. package/public/docs/assets/chunks/theme.BP14rGBx.js +2 -0
  73. package/public/docs/assets/cold-start-timeline.DxC_Sc7w.svg +1 -0
  74. package/public/docs/assets/cold-start-timeline.dark.CZ17YcAG.svg +1 -0
  75. package/public/docs/assets/columnar-layout.PghGeOEA.svg +1 -0
  76. package/public/docs/assets/columnar-layout.dark.BVNlz0ff.svg +1 -0
  77. package/public/docs/assets/container-memory.DIO0AnIm.svg +1 -0
  78. package/public/docs/assets/container-memory.dark.CP-5zuCl.svg +1 -0
  79. package/public/docs/assets/contributor-guide_architecture_board-widgets.md.B-OsL91z.js +1 -0
  80. package/public/docs/assets/contributor-guide_architecture_board-widgets.md.B-OsL91z.lean.js +1 -0
  81. package/public/docs/assets/contributor-guide_architecture_detector-contract.md.BOeH4d1J.js +1 -0
  82. package/public/docs/assets/contributor-guide_architecture_detector-contract.md.BOeH4d1J.lean.js +1 -0
  83. package/public/docs/assets/contributor-guide_architecture_drill-down.md.BtPdlM7r.js +1 -0
  84. package/public/docs/assets/contributor-guide_architecture_drill-down.md.BtPdlM7r.lean.js +1 -0
  85. package/public/docs/assets/{contributor-guide_architecture_impact-estimation.md.CzlXOnCq.js → contributor-guide_architecture_impact-estimation.md.DYCDPgkh.js} +1 -1
  86. package/public/docs/assets/{contributor-guide_architecture_impact-estimation.md.CzlXOnCq.lean.js → contributor-guide_architecture_impact-estimation.md.DYCDPgkh.lean.js} +1 -1
  87. package/public/docs/assets/{contributor-guide_architecture_index.md.94lNbF-4.js → contributor-guide_architecture_index.md.3TO9ic6w.js} +1 -1
  88. package/public/docs/assets/{contributor-guide_architecture_index.md.94lNbF-4.lean.js → contributor-guide_architecture_index.md.3TO9ic6w.lean.js} +1 -1
  89. package/public/docs/assets/{contributor-guide_architecture_overview.md.mQFlN66o.js → contributor-guide_architecture_overview.md.CehiRmGn.js} +1 -1
  90. package/public/docs/assets/{contributor-guide_architecture_overview.md.mQFlN66o.lean.js → contributor-guide_architecture_overview.md.CehiRmGn.lean.js} +1 -1
  91. package/public/docs/assets/contributor-guide_architecture_state-and-history.md.m3S3UdMk.js +1 -0
  92. package/public/docs/assets/contributor-guide_architecture_state-and-history.md.m3S3UdMk.lean.js +1 -0
  93. package/public/docs/assets/contributor-guide_architecture_widget-rendering.md.DbqPf2OT.js +1 -0
  94. package/public/docs/assets/contributor-guide_architecture_widget-rendering.md.DbqPf2OT.lean.js +1 -0
  95. package/public/docs/assets/{contributor-guide_architecture_worker-protocol.md.BaS_L10g.js → contributor-guide_architecture_worker-protocol.md.B93qJ_tT.js} +2 -2
  96. package/public/docs/assets/{contributor-guide_architecture_worker-protocol.md.BaS_L10g.lean.js → contributor-guide_architecture_worker-protocol.md.B93qJ_tT.lean.js} +1 -1
  97. package/public/docs/assets/contributor-guide_contributing.md.CvRsdr6J.js +1 -0
  98. package/public/docs/assets/contributor-guide_contributing.md.CvRsdr6J.lean.js +1 -0
  99. package/public/docs/assets/{contributor-guide_development-setup.md.CpUMVtIK.js → contributor-guide_development-setup.md.DvAN_9mK.js} +1 -1
  100. package/public/docs/assets/{contributor-guide_development-setup.md.CpUMVtIK.lean.js → contributor-guide_development-setup.md.DvAN_9mK.lean.js} +1 -1
  101. package/public/docs/assets/{contributor-guide_testing.md.C0q-BJfl.js → contributor-guide_testing.md.6rIKqSyY.js} +1 -1
  102. package/public/docs/assets/{contributor-guide_testing.md.C0q-BJfl.lean.js → contributor-guide_testing.md.6rIKqSyY.lean.js} +1 -1
  103. package/public/docs/assets/dag-stages.DSz_S937.svg +1 -0
  104. package/public/docs/assets/dag-stages.dark.F72UzxH4.svg +1 -0
  105. package/public/docs/assets/driver-executor.D5pQ7YN1.svg +1 -0
  106. package/public/docs/assets/driver-executor.dark.BmX9cPvh.svg +1 -0
  107. package/public/docs/assets/duplicate-plan-subtree.B4cvN6fj.svg +1 -0
  108. package/public/docs/assets/duplicate-plan-subtree.dark.Dw8wS0Ag.svg +1 -0
  109. package/public/docs/assets/{index.md.CETnDZzR.js → index.md.CHJVslga.js} +1 -1
  110. package/public/docs/assets/{index.md.CETnDZzR.lean.js → index.md.CHJVslga.lean.js} +1 -1
  111. package/public/docs/assets/join-strategy.C_FvrCEo.svg +1 -0
  112. package/public/docs/assets/join-strategy.dark.ChMLnNII.svg +1 -0
  113. package/public/docs/assets/memory-borrowing.BqQRJg0u.svg +1 -0
  114. package/public/docs/assets/memory-borrowing.dark.Yhh20O9C.svg +1 -0
  115. package/public/docs/assets/memory-regions.XHvO7jHG.svg +1 -0
  116. package/public/docs/assets/memory-regions.dark.D4TP9_08.svg +1 -0
  117. package/public/docs/assets/repartition-vs-coalesce.BovLRrpj.svg +1 -0
  118. package/public/docs/assets/repartition-vs-coalesce.dark.BhAczKZQ.svg +1 -0
  119. package/public/docs/assets/retry-escalation-ladder.DyTKJJmZ.svg +1 -0
  120. package/public/docs/assets/retry-escalation-ladder.dark.BdsabtU3.svg +1 -0
  121. package/public/docs/assets/shuffle-map-reduce.KuOEZVmg.svg +1 -0
  122. package/public/docs/assets/shuffle-map-reduce.dark.BgQZnFSb.svg +1 -0
  123. package/public/docs/assets/spill-classification.BU2euYDO.svg +1 -0
  124. package/public/docs/assets/spill-classification.dark.D7i1M40d.svg +1 -0
  125. package/public/docs/assets/{style.D2mY0HUs.css → style.DXOMCXxn.css} +1 -1
  126. package/public/docs/assets/tuning-reference_anti-patterns.md.Df1YMIHu.js +1 -0
  127. package/public/docs/assets/tuning-reference_anti-patterns.md.Df1YMIHu.lean.js +1 -0
  128. package/public/docs/assets/tuning-reference_aqe.md.BIsCtLzm.js +1 -0
  129. package/public/docs/assets/tuning-reference_aqe.md.BIsCtLzm.lean.js +1 -0
  130. package/public/docs/assets/tuning-reference_bottleneck-broadcast-sizing.md.CEstB3Ia.js +1 -0
  131. package/public/docs/assets/tuning-reference_bottleneck-broadcast-sizing.md.CEstB3Ia.lean.js +1 -0
  132. package/public/docs/assets/tuning-reference_bottleneck-cold-start.md.CEuy-72y.js +7 -0
  133. package/public/docs/assets/tuning-reference_bottleneck-cold-start.md.CEuy-72y.lean.js +1 -0
  134. package/public/docs/assets/tuning-reference_bottleneck-duplicate-plan-subtree.md.CIohQDfn.js +1 -0
  135. package/public/docs/assets/tuning-reference_bottleneck-duplicate-plan-subtree.md.CIohQDfn.lean.js +1 -0
  136. package/public/docs/assets/tuning-reference_bottleneck-failures.md.4z5BXGJ2.js +6 -0
  137. package/public/docs/assets/tuning-reference_bottleneck-failures.md.4z5BXGJ2.lean.js +1 -0
  138. package/public/docs/assets/tuning-reference_bottleneck-gc.md.DSxzZRK7.js +6 -0
  139. package/public/docs/assets/tuning-reference_bottleneck-gc.md.DSxzZRK7.lean.js +1 -0
  140. package/public/docs/assets/tuning-reference_bottleneck-job-failure-rate.md.BaJl__1W.js +8 -0
  141. package/public/docs/assets/tuning-reference_bottleneck-job-failure-rate.md.BaJl__1W.lean.js +1 -0
  142. package/public/docs/assets/tuning-reference_bottleneck-memory-utilization.md.DbP-SJZc.js +7 -0
  143. package/public/docs/assets/tuning-reference_bottleneck-memory-utilization.md.DbP-SJZc.lean.js +1 -0
  144. package/public/docs/assets/tuning-reference_bottleneck-retry-waste.md.D5JMjVOt.js +1 -0
  145. package/public/docs/assets/tuning-reference_bottleneck-retry-waste.md.D5JMjVOt.lean.js +1 -0
  146. package/public/docs/assets/tuning-reference_bottleneck-shuffle.md.CM-nTmIH.js +12 -0
  147. package/public/docs/assets/tuning-reference_bottleneck-shuffle.md.CM-nTmIH.lean.js +1 -0
  148. package/public/docs/assets/tuning-reference_bottleneck-skew.md.BdUwiDhn.js +14 -0
  149. package/public/docs/assets/tuning-reference_bottleneck-skew.md.BdUwiDhn.lean.js +1 -0
  150. package/public/docs/assets/tuning-reference_bottleneck-slow-host.md.BlIo6UDW.js +7 -0
  151. package/public/docs/assets/tuning-reference_bottleneck-slow-host.md.BlIo6UDW.lean.js +1 -0
  152. package/public/docs/assets/tuning-reference_bottleneck-small-files.md.B8kloyx8.js +5 -0
  153. package/public/docs/assets/tuning-reference_bottleneck-small-files.md.B8kloyx8.lean.js +1 -0
  154. package/public/docs/assets/tuning-reference_bottleneck-spill.md.PNH7mITt.js +6 -0
  155. package/public/docs/assets/tuning-reference_bottleneck-spill.md.PNH7mITt.lean.js +1 -0
  156. package/public/docs/assets/tuning-reference_bottleneck-straggler.md.DY36fHN5.js +7 -0
  157. package/public/docs/assets/tuning-reference_bottleneck-straggler.md.DY36fHN5.lean.js +1 -0
  158. package/public/docs/assets/tuning-reference_bottleneck-tiny-tasks.md.QTV7O8kU.js +8 -0
  159. package/public/docs/assets/tuning-reference_bottleneck-tiny-tasks.md.QTV7O8kU.lean.js +1 -0
  160. package/public/docs/assets/tuning-reference_bottleneck-utilization.md.DTiueZC3.js +5 -0
  161. package/public/docs/assets/tuning-reference_bottleneck-utilization.md.DTiueZC3.lean.js +1 -0
  162. package/public/docs/assets/tuning-reference_caching.md.B7aQ8asB.js +1 -0
  163. package/public/docs/assets/tuning-reference_caching.md.B7aQ8asB.lean.js +1 -0
  164. package/public/docs/assets/tuning-reference_cluster-config.md.ZVmDGsQ3.js +1 -0
  165. package/public/docs/assets/tuning-reference_cluster-config.md.ZVmDGsQ3.lean.js +1 -0
  166. package/public/docs/assets/tuning-reference_config.md.UvveiWG3.js +1 -0
  167. package/public/docs/assets/tuning-reference_config.md.UvveiWG3.lean.js +1 -0
  168. package/public/docs/assets/tuning-reference_data-formats.md.bjCAWH3N.js +1 -0
  169. package/public/docs/assets/tuning-reference_data-formats.md.bjCAWH3N.lean.js +1 -0
  170. package/public/docs/assets/tuning-reference_index.md.BQ_NooMV.js +1 -0
  171. package/public/docs/assets/tuning-reference_index.md.BQ_NooMV.lean.js +1 -0
  172. package/public/docs/assets/tuning-reference_intro.md.CobD-lGB.js +1 -0
  173. package/public/docs/assets/tuning-reference_intro.md.CobD-lGB.lean.js +1 -0
  174. package/public/docs/assets/tuning-reference_joins.md.BtKs_CuW.js +1 -0
  175. package/public/docs/assets/tuning-reference_joins.md.BtKs_CuW.lean.js +1 -0
  176. package/public/docs/assets/tuning-reference_memory-model.md.DhT-n4y3.js +1 -0
  177. package/public/docs/assets/tuning-reference_memory-model.md.DhT-n4y3.lean.js +1 -0
  178. package/public/docs/assets/tuning-reference_metrics.md.mLOh7Apj.js +1 -0
  179. package/public/docs/assets/tuning-reference_metrics.md.mLOh7Apj.lean.js +1 -0
  180. package/public/docs/assets/tuning-reference_partitioning.md.q0zKF_8X.js +1 -0
  181. package/public/docs/assets/tuning-reference_partitioning.md.q0zKF_8X.lean.js +1 -0
  182. package/public/docs/assets/tuning-reference_pyspark.md.DDCfvN9t.js +6 -0
  183. package/public/docs/assets/tuning-reference_pyspark.md.DDCfvN9t.lean.js +1 -0
  184. package/public/docs/assets/tuning-reference_shuffle.md.BZZ7R4Ix.js +1 -0
  185. package/public/docs/assets/tuning-reference_shuffle.md.BZZ7R4Ix.lean.js +1 -0
  186. package/public/docs/assets/tuning-reference_spark-architecture.md.Dwzm5avO.js +1 -0
  187. package/public/docs/assets/tuning-reference_spark-architecture.md.Dwzm5avO.lean.js +1 -0
  188. package/public/docs/assets/tuning-reference_table-formats.md.D6wj-2dX.js +1 -0
  189. package/public/docs/assets/tuning-reference_table-formats.md.D6wj-2dX.lean.js +1 -0
  190. package/public/docs/assets/udf-execution-models.BUFDICuG.svg +1 -0
  191. package/public/docs/assets/udf-execution-models.dark.YTNS6GDq.svg +1 -0
  192. package/public/docs/assets/user-guide_alternative-log-retrieval.md.sU3KGarf.js +1 -0
  193. package/public/docs/assets/user-guide_alternative-log-retrieval.md.sU3KGarf.lean.js +1 -0
  194. package/public/docs/assets/user-guide_getting-started.md.DtEM37MK.js +3 -0
  195. package/public/docs/assets/user-guide_getting-started.md.DtEM37MK.lean.js +1 -0
  196. package/public/docs/assets/{user-guide_mcp-tools.md.DwYI1d6C.js → user-guide_mcp-tools.md.C8MiIu7F.js} +35 -5
  197. package/public/docs/assets/{user-guide_mcp-tools.md.DwYI1d6C.lean.js → user-guide_mcp-tools.md.C8MiIu7F.lean.js} +1 -1
  198. package/public/docs/assets/{user-guide_run-comparison.md.5-oaOfTu.js → user-guide_run-comparison.md.S0TWWmLY.js} +1 -1
  199. package/public/docs/assets/{user-guide_run-comparison.md.5-oaOfTu.lean.js → user-guide_run-comparison.md.S0TWWmLY.lean.js} +1 -1
  200. package/public/docs/assets/user-guide_understanding-findings.md.D0R_Y-R2.js +1 -0
  201. package/public/docs/assets/{user-guide_understanding-findings.md.CK2WZ0Tf.lean.js → user-guide_understanding-findings.md.D0R_Y-R2.lean.js} +1 -1
  202. package/public/docs/contributor-guide/architecture/board-widgets.html +7 -7
  203. package/public/docs/contributor-guide/architecture/detector-contract.html +7 -7
  204. package/public/docs/contributor-guide/architecture/drill-down.html +7 -7
  205. package/public/docs/contributor-guide/architecture/impact-estimation.html +7 -7
  206. package/public/docs/contributor-guide/architecture/index.html +7 -7
  207. package/public/docs/contributor-guide/architecture/overview.html +7 -7
  208. package/public/docs/contributor-guide/architecture/state-and-history.html +7 -7
  209. package/public/docs/contributor-guide/architecture/widget-rendering.html +7 -7
  210. package/public/docs/contributor-guide/architecture/worker-protocol.html +8 -8
  211. package/public/docs/contributor-guide/contributing.html +7 -7
  212. package/public/docs/contributor-guide/development-setup.html +7 -7
  213. package/public/docs/contributor-guide/testing.html +7 -7
  214. package/public/docs/hashmap.json +1 -1
  215. package/public/docs/index.html +7 -7
  216. package/public/docs/tuning-reference/anti-patterns.html +29 -0
  217. package/public/docs/tuning-reference/aqe.html +29 -0
  218. package/public/docs/tuning-reference/bottleneck-broadcast-sizing.html +29 -0
  219. package/public/docs/tuning-reference/bottleneck-cold-start.html +35 -0
  220. package/public/docs/tuning-reference/bottleneck-duplicate-plan-subtree.html +30 -0
  221. package/public/docs/tuning-reference/bottleneck-failures.html +35 -0
  222. package/public/docs/tuning-reference/bottleneck-gc.html +34 -0
  223. package/public/docs/tuning-reference/bottleneck-job-failure-rate.html +37 -0
  224. package/public/docs/tuning-reference/bottleneck-memory-utilization.html +35 -0
  225. package/public/docs/tuning-reference/bottleneck-retry-waste.html +30 -0
  226. package/public/docs/tuning-reference/bottleneck-shuffle.html +40 -0
  227. package/public/docs/tuning-reference/bottleneck-skew.html +42 -0
  228. package/public/docs/tuning-reference/bottleneck-slow-host.html +35 -0
  229. package/public/docs/tuning-reference/bottleneck-small-files.html +33 -0
  230. package/public/docs/tuning-reference/bottleneck-spill.html +34 -0
  231. package/public/docs/tuning-reference/bottleneck-straggler.html +35 -0
  232. package/public/docs/tuning-reference/bottleneck-tiny-tasks.html +36 -0
  233. package/public/docs/tuning-reference/bottleneck-utilization.html +34 -0
  234. package/public/docs/tuning-reference/caching.html +29 -0
  235. package/public/docs/tuning-reference/cluster-config.html +29 -0
  236. package/public/docs/tuning-reference/config.html +29 -0
  237. package/public/docs/tuning-reference/data-formats.html +29 -0
  238. package/public/docs/tuning-reference/index.html +29 -0
  239. package/public/docs/tuning-reference/intro.html +29 -0
  240. package/public/docs/tuning-reference/joins.html +29 -0
  241. package/public/docs/tuning-reference/memory-model.html +29 -0
  242. package/public/docs/tuning-reference/metrics.html +29 -0
  243. package/public/docs/tuning-reference/partitioning.html +29 -0
  244. package/public/docs/tuning-reference/pyspark.html +34 -0
  245. package/public/docs/tuning-reference/shuffle.html +29 -0
  246. package/public/docs/tuning-reference/spark-architecture.html +29 -0
  247. package/public/docs/tuning-reference/table-formats.html +29 -0
  248. package/public/docs/user-guide/alternative-log-retrieval.html +29 -0
  249. package/public/docs/user-guide/getting-started.html +8 -8
  250. package/public/docs/user-guide/mcp-tools.html +41 -11
  251. package/public/docs/user-guide/run-comparison.html +7 -7
  252. package/public/docs/user-guide/understanding-findings.html +7 -7
  253. package/public/index.html +6 -6
  254. package/vendor-core/analyzer.js +74 -74
  255. package/vendor-core/cli/budgets.js +13 -27
  256. package/vendor-core/cli/collect-run.js +43 -19
  257. package/vendor-core/core-count.js +25 -27
  258. package/vendor-core/core-locality-ratio.js +4 -11
  259. package/vendor-core/core-time-series.js +6 -12
  260. package/vendor-core/core-usage-locality.js +3 -4
  261. package/vendor-core/detectors.js +256 -375
  262. package/vendor-core/docs-config.js +69 -21
  263. package/vendor-core/docs-content/chapters/01-intro.md +32 -0
  264. package/vendor-core/docs-content/chapters/02-spark-architecture.md +76 -0
  265. package/vendor-core/docs-content/chapters/03-memory-model.md +73 -0
  266. package/vendor-core/docs-content/chapters/04-partitioning.md +65 -0
  267. package/vendor-core/docs-content/chapters/05-joins.md +62 -0
  268. package/vendor-core/docs-content/chapters/06-shuffle.md +59 -0
  269. package/vendor-core/docs-content/chapters/07-data-formats.md +81 -0
  270. package/vendor-core/docs-content/chapters/07b-table-formats.md +56 -0
  271. package/vendor-core/docs-content/chapters/08-caching.md +58 -0
  272. package/vendor-core/docs-content/chapters/09-pyspark.md +78 -0
  273. package/vendor-core/docs-content/chapters/10-aqe.md +167 -0
  274. package/vendor-core/docs-content/chapters/11-cluster-config.md +170 -0
  275. package/vendor-core/docs-content/chapters/12-anti-patterns.md +171 -0
  276. package/vendor-core/docs-content/chapters/14-metrics.md +87 -0
  277. package/vendor-core/docs-content/chapters/15-config.md +93 -0
  278. package/vendor-core/docs-content/chapters/nav-index.json +370 -0
  279. package/vendor-core/docs-content/detection/cache.md +6 -0
  280. package/vendor-core/docs-content/detection/cfg.md +15 -0
  281. package/vendor-core/docs-content/detection/chrn.md +7 -0
  282. package/vendor-core/docs-content/detection/cold.md +4 -0
  283. package/vendor-core/docs-content/detection/cstor.md +4 -0
  284. package/vendor-core/docs-content/detection/fail.md +5 -0
  285. package/vendor-core/docs-content/detection/gc.md +4 -0
  286. package/vendor-core/docs-content/detection/host.md +5 -0
  287. package/vendor-core/docs-content/detection/incmp.md +6 -0
  288. package/vendor-core/docs-content/detection/jobs.md +4 -0
  289. package/vendor-core/docs-content/detection/local.md +7 -0
  290. package/vendor-core/docs-content/detection/mem.md +10 -0
  291. package/vendor-core/docs-content/detection/part.md +5 -0
  292. package/vendor-core/docs-content/detection/plan.md +14 -0
  293. package/vendor-core/docs-content/detection/retry.md +4 -0
  294. package/vendor-core/docs-content/detection/sfail.md +5 -0
  295. package/vendor-core/docs-content/detection/shape.md +5 -0
  296. package/vendor-core/docs-content/detection/shfl.md +4 -0
  297. package/vendor-core/docs-content/detection/skew.md +6 -0
  298. package/vendor-core/docs-content/detection/slow.md +6 -0
  299. package/vendor-core/docs-content/detection/spec.md +7 -0
  300. package/vendor-core/docs-content/detection/spill.md +7 -0
  301. package/vendor-core/docs-content/detection/strag.md +5 -0
  302. package/vendor-core/docs-content/detection/tiny.md +4 -0
  303. package/vendor-core/docs-content/detection/util.md +4 -0
  304. package/vendor-core/docs-content/diagrams/aqe-loop.dark.svg +1 -0
  305. package/vendor-core/docs-content/diagrams/aqe-loop.svg +1 -0
  306. package/vendor-core/docs-content/diagrams/broadcast-vs-shuffle.dark.svg +1 -0
  307. package/vendor-core/docs-content/diagrams/broadcast-vs-shuffle.svg +1 -0
  308. package/vendor-core/docs-content/diagrams/cache-lifecycle.dark.svg +1 -0
  309. package/vendor-core/docs-content/diagrams/cache-lifecycle.svg +1 -0
  310. package/vendor-core/docs-content/diagrams/cold-start-timeline.dark.svg +1 -0
  311. package/vendor-core/docs-content/diagrams/cold-start-timeline.svg +1 -0
  312. package/vendor-core/docs-content/diagrams/columnar-layout.dark.svg +1 -0
  313. package/vendor-core/docs-content/diagrams/columnar-layout.svg +1 -0
  314. package/vendor-core/docs-content/diagrams/container-memory.dark.svg +1 -0
  315. package/vendor-core/docs-content/diagrams/container-memory.svg +1 -0
  316. package/vendor-core/docs-content/diagrams/dag-stages.dark.svg +1 -0
  317. package/vendor-core/docs-content/diagrams/dag-stages.svg +1 -0
  318. package/vendor-core/docs-content/diagrams/driver-executor.dark.svg +1 -0
  319. package/vendor-core/docs-content/diagrams/driver-executor.svg +1 -0
  320. package/vendor-core/docs-content/diagrams/duplicate-plan-subtree.dark.svg +1 -0
  321. package/vendor-core/docs-content/diagrams/duplicate-plan-subtree.svg +1 -0
  322. package/vendor-core/docs-content/diagrams/join-strategy.dark.svg +1 -0
  323. package/vendor-core/docs-content/diagrams/join-strategy.svg +1 -0
  324. package/vendor-core/docs-content/diagrams/memory-borrowing.dark.svg +1 -0
  325. package/vendor-core/docs-content/diagrams/memory-borrowing.svg +1 -0
  326. package/vendor-core/docs-content/diagrams/memory-regions.dark.svg +1 -0
  327. package/vendor-core/docs-content/diagrams/memory-regions.svg +1 -0
  328. package/vendor-core/docs-content/diagrams/repartition-vs-coalesce.dark.svg +1 -0
  329. package/vendor-core/docs-content/diagrams/repartition-vs-coalesce.svg +1 -0
  330. package/vendor-core/docs-content/diagrams/retry-escalation-ladder.dark.svg +1 -0
  331. package/vendor-core/docs-content/diagrams/retry-escalation-ladder.svg +1 -0
  332. package/vendor-core/docs-content/diagrams/shuffle-map-reduce.dark.svg +1 -0
  333. package/vendor-core/docs-content/diagrams/shuffle-map-reduce.svg +1 -0
  334. package/vendor-core/docs-content/diagrams/spill-classification.dark.svg +1 -0
  335. package/vendor-core/docs-content/diagrams/spill-classification.svg +1 -0
  336. package/vendor-core/docs-content/diagrams/udf-execution-models.dark.svg +1 -0
  337. package/vendor-core/docs-content/diagrams/udf-execution-models.svg +1 -0
  338. package/vendor-core/docs-content/tuning/broadcast-sizing.md +78 -0
  339. package/vendor-core/docs-content/tuning/cold-start.md +81 -0
  340. package/vendor-core/docs-content/tuning/duplicate-plan-subtree.md +45 -0
  341. package/vendor-core/docs-content/tuning/failures.md +124 -0
  342. package/vendor-core/docs-content/tuning/gc.md +110 -0
  343. package/vendor-core/docs-content/tuning/job-failure-rate.md +101 -0
  344. package/vendor-core/docs-content/tuning/memory-utilization.md +58 -0
  345. package/vendor-core/docs-content/tuning/retry-waste.md +90 -0
  346. package/vendor-core/docs-content/tuning/shuffle.md +154 -0
  347. package/vendor-core/docs-content/tuning/skew.md +123 -0
  348. package/vendor-core/docs-content/tuning/slow-host.md +117 -0
  349. package/vendor-core/docs-content/tuning/small-files.md +99 -0
  350. package/vendor-core/docs-content/tuning/spill.md +114 -0
  351. package/vendor-core/docs-content/tuning/straggler.md +103 -0
  352. package/vendor-core/docs-content/tuning/tiny-tasks.md +94 -0
  353. package/vendor-core/docs-content/tuning/utilization.md +90 -0
  354. package/vendor-core/docs-site-config.js +10 -17
  355. package/vendor-core/efficiency-model.js +7 -13
  356. package/vendor-core/etl-phases.js +3 -5
  357. package/vendor-core/event-handlers.js +232 -134
  358. package/vendor-core/event-schemas.js +48 -114
  359. package/vendor-core/evidence-availability.js +5 -10
  360. package/vendor-core/evidence-report.js +72 -122
  361. package/vendor-core/export-data.js +48 -0
  362. package/vendor-core/finding-action-label.js +4 -10
  363. package/vendor-core/finding-filter-predicate.js +3 -7
  364. package/vendor-core/finding-generic-recommendation.js +112 -0
  365. package/vendor-core/finding-names.js +51 -0
  366. package/vendor-core/format-utils.js +112 -38
  367. package/vendor-core/impact-band.js +18 -24
  368. package/vendor-core/impact-estimator.js +38 -74
  369. package/vendor-core/ingest.js +7 -13
  370. package/vendor-core/job-groups.js +3 -6
  371. package/vendor-core/list-runs.js +278 -0
  372. package/vendor-core/load-vendored.js +6 -12
  373. package/vendor-core/log-header-peek.js +81 -0
  374. package/vendor-core/lz4-block.js +4 -6
  375. package/vendor-core/mcp-server-factory.js +38 -8
  376. package/vendor-core/mcp-tools.js +105 -76
  377. package/vendor-core/model-assembler.js +8 -16
  378. package/vendor-core/occupancy.js +5 -9
  379. package/vendor-core/parser-worker.js +18 -27
  380. package/vendor-core/plan-dot.js +2 -5
  381. package/vendor-core/plan-duration-attribution.js +78 -29
  382. package/vendor-core/plan-graph-model.js +126 -69
  383. package/vendor-core/plan-node-detail.js +31 -17
  384. package/vendor-core/plan-summary.js +19 -8
  385. package/vendor-core/recommendation-rollup.js +35 -39
  386. package/vendor-core/redact.js +72 -16
  387. package/vendor-core/rolling-log-reassembly.js +4 -6
  388. package/vendor-core/run-comparison.js +65 -70
  389. package/vendor-core/scaling-sim.js +5 -7
  390. package/vendor-core/session-snapshot.js +1 -1
  391. package/vendor-core/shs-fetch.js +4 -6
  392. package/vendor-core/shs-load.js +9 -13
  393. package/vendor-core/shs-request.js +1 -1
  394. package/vendor-core/stage-quantiles.js +14 -0
  395. package/vendor-core/types.js +78 -18
  396. package/vendor-core/wasted-core-hours.js +7 -12
  397. package/public/assets/AutoscalingChurn-CP5OjN6v.js +0 -1
  398. package/public/assets/CacheUtilization-BjyawXL6.js +0 -1
  399. package/public/assets/CachingOpportunity-DV2ABG2G.js +0 -1
  400. package/public/assets/ConfigAudit-DMiBhAoG.js +0 -1
  401. package/public/assets/CoreUsageArea-CGYIgPnt.js +0 -1
  402. package/public/assets/Dashboard-D1_IrWRs.js +0 -12
  403. package/public/assets/ExecutorTimeline-DkaAGqQT.js +0 -1
  404. package/public/assets/Failures-Crngoicu.js +0 -1
  405. package/public/assets/GcPressure-CFXm4BnA.js +0 -1
  406. package/public/assets/IncompleteRun-BWEJTb13.js +0 -1
  407. package/public/assets/JobFailures-BmjxCA-h.js +0 -1
  408. package/public/assets/MemoryUtilization-Bu2uQJbd.js +0 -1
  409. package/public/assets/PlanExplorer-DKUwF0uz.js +0 -1
  410. package/public/assets/PlanGraphRoute-BjPSugIG.js +0 -1
  411. package/public/assets/ShuffleIO--Rur3neu.js +0 -1
  412. package/public/assets/Spill-DIMpt8c2.js +0 -1
  413. package/public/assets/TaskSkew-BDr1DbeI.js +0 -1
  414. package/public/assets/index-4id52G-A.js +0 -9
  415. package/public/assets/index-D9kwVYIO.css +0 -1
  416. package/public/assets/parser-worker-00O9WEQC.js +0 -65
  417. package/public/assets/plan-graph-vendor-vZQHG2EJ.js +0 -7
  418. package/public/assets/react-vendor-u4pyvC5Y.js +0 -9
  419. package/public/assets/useRecentFiles-46iBU9zJ.js +0 -5
  420. package/public/docs/assets/chunks/@localSearchIndexroot.DclgKtlT.js +0 -1
  421. package/public/docs/assets/chunks/theme.CoT6y5bf.js +0 -2
  422. package/public/docs/assets/contributor-guide_architecture_board-widgets.md.BtjoE_1k.js +0 -1
  423. package/public/docs/assets/contributor-guide_architecture_board-widgets.md.BtjoE_1k.lean.js +0 -1
  424. package/public/docs/assets/contributor-guide_architecture_detector-contract.md.DQyCHQNM.js +0 -1
  425. package/public/docs/assets/contributor-guide_architecture_detector-contract.md.DQyCHQNM.lean.js +0 -1
  426. package/public/docs/assets/contributor-guide_architecture_drill-down.md.BKfyDQck.js +0 -1
  427. package/public/docs/assets/contributor-guide_architecture_drill-down.md.BKfyDQck.lean.js +0 -1
  428. package/public/docs/assets/contributor-guide_architecture_state-and-history.md.DaqttKgQ.js +0 -1
  429. package/public/docs/assets/contributor-guide_architecture_state-and-history.md.DaqttKgQ.lean.js +0 -1
  430. package/public/docs/assets/contributor-guide_architecture_widget-rendering.md.Bk6Iyj9S.js +0 -1
  431. package/public/docs/assets/contributor-guide_architecture_widget-rendering.md.Bk6Iyj9S.lean.js +0 -1
  432. package/public/docs/assets/contributor-guide_contributing.md.C-lKs70I.js +0 -1
  433. package/public/docs/assets/contributor-guide_contributing.md.C-lKs70I.lean.js +0 -1
  434. package/public/docs/assets/user-guide_getting-started.md.BJdD7a7_.js +0 -3
  435. package/public/docs/assets/user-guide_getting-started.md.BJdD7a7_.lean.js +0 -1
  436. package/public/docs/assets/user-guide_understanding-findings.md.CK2WZ0Tf.js +0 -1
  437. package/public/vendor/spark-doc/anchors.json +0 -205
  438. package/public/vendor/spark-doc/index.html +0 -4202
  439. package/public/vendor/spark-doc/landing.html +0 -418
  440. package/public/vendor/spark-doc/meta.html +0 -970
@@ -0,0 +1 @@
1
+ <svg id="gd30" width="100%" xmlns="http://www.w3.org/2000/svg" class="flowchart" viewBox="-8 -8 937.671875 314.7875" role="graphics-document document" aria-roledescription="flowchart-v2" style="max-width: 937.671875px;"><style>#gd30{font-family:Recursive,ui-sans-serif,system-ui,-apple-system,sans-serif;font-size:16px;fill:#f4f4f5;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#gd30 .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#gd30 .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#gd30 .error-icon{fill:#1a232f;}#gd30 .error-text{fill:#e5dcd0;stroke:#e5dcd0;}#gd30 .edge-thickness-normal{stroke-width:1px;}#gd30 .edge-thickness-thick{stroke-width:3.5px;}#gd30 .edge-pattern-solid{stroke-dasharray:0;}#gd30 .edge-thickness-invisible{stroke-width:0;fill:none;}#gd30 .edge-pattern-dashed{stroke-dasharray:3;}#gd30 .edge-pattern-dotted{stroke-dasharray:2;}#gd30 .marker{fill:#a9b5b4;stroke:#a9b5b4;}#gd30 .marker.cross{stroke:#a9b5b4;}#gd30 svg{font-family:Recursive,ui-sans-serif,system-ui,-apple-system,sans-serif;font-size:16px;}#gd30 p{margin:0;}#gd30 .label{font-family:Recursive,ui-sans-serif,system-ui,-apple-system,sans-serif;color:#f4f4f5;}#gd30 .cluster-label text{fill:#f4f4f5;}#gd30 .cluster-label span{color:#f4f4f5;}#gd30 .cluster-label span p{background-color:transparent;}#gd30 .label text,#gd30 span{fill:#f4f4f5;color:#f4f4f5;}#gd30 .node rect,#gd30 .node circle,#gd30 .node ellipse,#gd30 .node polygon,#gd30 .node path{fill:#17202c;stroke:#3a4a52;stroke-width:1px;}#gd30 .rough-node .label text,#gd30 .node .label text,#gd30 .image-shape .label,#gd30 .icon-shape .label{text-anchor:middle;}#gd30 .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#gd30 .rough-node .label,#gd30 .node .label,#gd30 .image-shape .label,#gd30 .icon-shape .label{text-align:center;}#gd30 .node.clickable{cursor:pointer;}#gd30 .root .anchor path{fill:#a9b5b4!important;stroke-width:0;stroke:#a9b5b4;}#gd30 .arrowheadPath{fill:rgba(255, 255, 255, 0);}#gd30 .edgePath .path{stroke:#a9b5b4;stroke-width:1px;}#gd30 .flowchart-link{stroke:#a9b5b4;fill:none;}#gd30 .edgeLabel{background-color:#11171a;text-align:center;}#gd30 .edgeLabel p{background-color:#11171a;}#gd30 .edgeLabel rect{opacity:0.5;background-color:#11171a;fill:#11171a;}#gd30 .labelBkg{background-color:rgba(17, 23, 26, 0.5);}#gd30 .cluster rect{fill:#11171a;stroke:#233035;stroke-width:1px;}#gd30 .cluster text{fill:#f4f4f5;}#gd30 .cluster span{color:#f4f4f5;}#gd30 div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:Recursive,ui-sans-serif,system-ui,-apple-system,sans-serif;font-size:12px;background:#1a232f;border:1px solid hsl(214.2857142857, 0%, 4.3137254902%);border-radius:2px;pointer-events:none;z-index:100;}#gd30 .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#f4f4f5;}#gd30 rect.text{fill:none;stroke-width:0;}#gd30 .icon-shape,#gd30 .image-shape{background-color:#11171a;text-align:center;}#gd30 .icon-shape p,#gd30 .image-shape p{background-color:#11171a;padding:2px;}#gd30 .icon-shape .label rect,#gd30 .image-shape .label rect{opacity:0.5;background-color:#11171a;fill:#11171a;}#gd30 .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#gd30 .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#gd30 .node .neo-node{stroke:#3a4a52;}#gd30 [data-look=&quot;neo&quot;].node rect,#gd30 [data-look=&quot;neo&quot;].cluster rect,#gd30 [data-look=&quot;neo&quot;].node polygon{stroke:url(#gd30-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#gd30 [data-look=&quot;neo&quot;].swimlane.cluster rect{filter:none;}#gd30 [data-look=&quot;neo&quot;].node path{stroke:url(#gd30-gradient);stroke-width:1px;}#gd30 [data-look=&quot;neo&quot;].node .outer-path{filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#gd30 [data-look=&quot;neo&quot;].node .neo-line path{stroke:#3a4a52;filter:none;}#gd30 [data-look=&quot;neo&quot;].node circle{stroke:url(#gd30-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#gd30 [data-look=&quot;neo&quot;].node circle .state-start{fill:#000000;}#gd30 [data-look=&quot;neo&quot;].icon-shape .icon{fill:url(#gd30-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#gd30 [data-look=&quot;neo&quot;].icon-shape .icon-neo path{stroke:url(#gd30-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#gd30 :root{--mermaid-font-family:Recursive,ui-sans-serif,system-ui,-apple-system,sans-serif;}</style><g><marker id="gd30_flowchart-v2-pointEnd" class="marker flowchart-v2" viewBox="0 0 10 10" refX="5" refY="5" markerUnits="userSpaceOnUse" markerWidth="8" markerHeight="8" orient="auto"><path d="M 0 0 L 10 5 L 0 10 z" class="arrowMarkerPath" style="stroke-width:1;stroke-dasharray:1,0"></path></marker><marker id="gd30_flowchart-v2-pointStart" class="marker flowchart-v2" viewBox="0 0 10 10" refX="4.5" refY="5" markerUnits="userSpaceOnUse" markerWidth="8" markerHeight="8" orient="auto"><path d="M 0 5 L 10 10 L 10 0 z" class="arrowMarkerPath" style="stroke-width:1;stroke-dasharray:1,0"></path></marker><marker id="gd30_flowchart-v2-pointEnd-margin" class="marker flowchart-v2" viewBox="0 0 11.5 14" refX="11.5" refY="7" markerUnits="userSpaceOnUse" markerWidth="10.5" markerHeight="14" orient="auto"><path d="M 0 0 L 11.5 7 L 0 14 z" class="arrowMarkerPath" style="stroke-width:0;stroke-dasharray:1,0"></path></marker><marker id="gd30_flowchart-v2-pointStart-margin" class="marker flowchart-v2" viewBox="0 0 11.5 14" refX="1" refY="7" markerUnits="userSpaceOnUse" markerWidth="11.5" markerHeight="14" orient="auto"><polygon points="0,7 11.5,14 11.5,0" class="arrowMarkerPath" style="stroke-width:0;stroke-dasharray:1,0"></polygon></marker><marker id="gd30_flowchart-v2-circleEnd" class="marker flowchart-v2" viewBox="0 0 10 10" refX="11" refY="5" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"><circle cx="5" cy="5" r="5" class="arrowMarkerPath" style="stroke-width:1;stroke-dasharray:1,0"></circle></marker><marker id="gd30_flowchart-v2-circleStart" class="marker flowchart-v2" viewBox="0 0 10 10" refX="-1" refY="5" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"><circle cx="5" cy="5" r="5" class="arrowMarkerPath" style="stroke-width:1;stroke-dasharray:1,0"></circle></marker><marker id="gd30_flowchart-v2-circleEnd-margin" class="marker flowchart-v2" viewBox="0 0 10 10" refY="5" refX="12.25" markerUnits="userSpaceOnUse" markerWidth="14" markerHeight="14" orient="auto"><circle cx="5" cy="5" r="5" class="arrowMarkerPath" style="stroke-width:0;stroke-dasharray:1,0"></circle></marker><marker id="gd30_flowchart-v2-circleStart-margin" class="marker flowchart-v2" viewBox="0 0 10 10" refX="-2" refY="5" markerUnits="userSpaceOnUse" markerWidth="14" markerHeight="14" orient="auto"><circle cx="5" cy="5" r="5" class="arrowMarkerPath" style="stroke-width:0;stroke-dasharray:1,0"></circle></marker><marker id="gd30_flowchart-v2-crossEnd" class="marker cross flowchart-v2" viewBox="0 0 11 11" refX="12" refY="5.2" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"><path d="M 1,1 l 9,9 M 10,1 l -9,9" class="arrowMarkerPath" style="stroke-width:2;stroke-dasharray:1,0"></path></marker><marker id="gd30_flowchart-v2-crossStart" class="marker cross flowchart-v2" viewBox="0 0 11 11" refX="-1" refY="5.2" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"><path d="M 1,1 l 9,9 M 10,1 l -9,9" class="arrowMarkerPath" style="stroke-width:2;stroke-dasharray:1,0"></path></marker><marker id="gd30_flowchart-v2-crossEnd-margin" class="marker cross flowchart-v2" viewBox="0 0 15 15" refX="17.7" refY="7.5" markerUnits="userSpaceOnUse" markerWidth="12" markerHeight="12" orient="auto"><path d="M 1,1 L 14,14 M 1,14 L 14,1" class="arrowMarkerPath" style="stroke-width:2.5"></path></marker><marker id="gd30_flowchart-v2-crossStart-margin" class="marker cross flowchart-v2" viewBox="0 0 15 15" refX="-3.5" refY="7.5" markerUnits="userSpaceOnUse" markerWidth="12" markerHeight="12" orient="auto"><path d="M 1,1 L 14,14 M 1,14 L 14,1" class="arrowMarkerPath" style="stroke-width:2.5;stroke-dasharray:1,0"></path></marker><g class="root"><g class="clusters"><g class="cluster " id="gd30-Reduces" data-look="classic"><rect x="697.7421875" y="8" width="223.9296875" height="290.7875"></rect><g class="cluster-label " transform="translate(756.20703125, 8)"><g><rect class="background" style="stroke: none"></rect><text y="-10.1"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">Reduce</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> tasks</tspan></tspan></text></g></g></g><g class="cluster " id="gd30-Outputs" data-look="classic"><rect x="360.59375" y="8" width="242.4609375" height="290.7875"></rect><g class="cluster-label " transform="translate(431.84375, 8)"><g><rect class="background" style="stroke: none"></rect><text y="-10.1"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">Map</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> outputs</tspan></tspan></text></g></g></g><g class="cluster " id="gd30-Maps" data-look="classic"><rect x="8" y="32.16875000000002" width="258.3671875" height="252.45"></rect><g class="cluster-label " transform="translate(96.75, 32.16875000000002)"><g><rect class="background" style="stroke: none"></rect><text y="-10.1"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">Map</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> tasks</tspan></tspan></text></g></g></g></g><g class="edgePaths"><path d="M241.367,100.281L245.534,100.281C249.701,100.281,258.034,100.281,270.053,100.281C282.072,100.281,297.776,100.281,313.48,100.281C329.185,100.281,344.889,100.281,356.242,100.281C367.594,100.281,374.594,100.281,378.094,100.281L381.594,100.281" id="gd30-L_M1_F1_0" class=" edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" data-edge="true" data-et="edge" data-id="L_M1_F1_0" data-points="W3sieCI6MjQxLjM2NzE4NzUsInkiOjEwMC4yODEyNX0seyJ4IjoyNjYuMzY3MTg3NSwieSI6MTAwLjI4MTI1fSx7IngiOjMxMy40ODA0Njg3NSwieSI6MTAwLjI4MTI1fSx7IngiOjM2MC41OTM3NSwieSI6MTAwLjI4MTI1fSx7IngiOjM4NS41OTM3NSwieSI6MTAwLjI4MTI1fV0=" data-look="classic" marker-end="url(#gd30_flowchart-v2-pointEnd)" style=";"></path><path d="M241.367,216.506L245.534,216.506C249.701,216.506,258.034,216.506,270.053,216.506C282.072,216.506,297.776,216.506,313.48,216.506C329.185,216.506,344.889,216.506,356.242,216.506C367.594,216.506,374.594,216.506,378.094,216.506L381.594,216.506" id="gd30-L_M2_F2_0" class=" edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" data-edge="true" data-et="edge" data-id="L_M2_F2_0" data-points="W3sieCI6MjQxLjM2NzE4NzUsInkiOjIxNi41MDYyNX0seyJ4IjoyNjYuMzY3MTg3NSwieSI6MjE2LjUwNjI1fSx7IngiOjMxMy40ODA0Njg3NSwieSI6MjE2LjUwNjI1fSx7IngiOjM2MC41OTM3NSwieSI6MjE2LjUwNjI1fSx7IngiOjM4NS41OTM3NSwieSI6MjE2LjUwNjI1fV0=" data-look="classic" marker-end="url(#gd30_flowchart-v2-pointEnd)" style=";"></path><path d="M550.972,75.969L559.652,72.917C568.333,69.865,585.694,63.76,602.265,60.708C618.836,57.656,634.617,57.656,650.398,57.656C666.18,57.656,681.961,57.656,693.363,58.325C704.766,58.993,711.789,60.33,715.301,60.999L718.813,61.667" id="gd30-L_F1_R1_0" class=" edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" data-edge="true" data-et="edge" data-id="L_F1_R1_0" data-points="W3sieCI6NTUwLjk3MTgwMjgzMTc0NDksInkiOjc1Ljk2ODc1fSx7IngiOjYwMy4wNTQ2ODc1LCJ5Ijo1Ny42NTYyNDk5OTk5OTk5OX0seyJ4Ijo2NTAuMzk4NDM3NSwieSI6NTcuNjU2MjQ5OTk5OTk5OTl9LHsieCI6Njk3Ljc0MjE4NzUsInkiOjU3LjY1NjI0OTk5OTk5OTk5fSx7IngiOjcyMi43NDIxODc1LCJ5Ijo2Mi40MTQ5OTgyMTE5ODA1OTV9XQ==" data-look="classic" marker-end="url(#gd30_flowchart-v2-pointEnd)" style=";"></path><path d="M518.934,124.594L532.954,133.779C546.974,142.965,575.014,161.335,596.925,170.521C618.836,179.706,634.617,179.706,650.398,179.706C666.18,179.706,681.961,179.706,700.114,185.032C718.266,190.359,738.79,201.011,749.052,206.337L759.314,211.664" id="gd30-L_F1_R2_0" class=" edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" data-edge="true" data-et="edge" data-id="L_F1_R2_0" data-points="W3sieCI6NTE4LjkzMzYzOTg1Nzc2NjgsInkiOjEyNC41OTM3NX0seyJ4Ijo2MDMuMDU0Njg3NSwieSI6MTc5LjcwNjI0OTk5OTk5OTk4fSx7IngiOjY1MC4zOTg0Mzc1LCJ5IjoxNzkuNzA2MjQ5OTk5OTk5OTh9LHsieCI6Njk3Ljc0MjE4NzUsInkiOjE3OS43MDYyNDk5OTk5OTk5OH0seyJ4Ijo3NjIuODY0MzUwODY4NDY2MywieSI6MjEzLjUwNjI1fV0=" data-look="classic" marker-end="url(#gd30_flowchart-v2-pointEnd)" style=";"></path><path d="M518.934,192.194L532.954,183.008C546.974,173.823,575.014,155.452,596.925,146.267C618.836,137.081,634.617,137.081,650.398,137.081C666.18,137.081,681.961,137.081,700.114,131.755C718.266,126.429,738.79,115.776,749.052,110.45L759.314,105.124" id="gd30-L_F2_R1_0" class=" edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" data-edge="true" data-et="edge" data-id="L_F2_R1_0" data-points="W3sieCI6NTE4LjkzMzYzOTg1Nzc2NjcsInkiOjE5Mi4xOTM3NX0seyJ4Ijo2MDMuMDU0Njg3NSwieSI6MTM3LjA4MTI0OTk5OTk5OTk4fSx7IngiOjY1MC4zOTg0Mzc1LCJ5IjoxMzcuMDgxMjQ5OTk5OTk5OTh9LHsieCI6Njk3Ljc0MjE4NzUsInkiOjEzNy4wODEyNDk5OTk5OTk5OH0seyJ4Ijo3NjIuODY0MzUwODY4NDY2MywieSI6MTAzLjI4MTI1fV0=" data-look="classic" marker-end="url(#gd30_flowchart-v2-pointEnd)" style=";"></path><path d="M550.972,240.819L559.652,243.871C568.333,246.923,585.694,253.027,602.265,256.079C618.836,259.131,634.617,259.131,650.398,259.131C666.18,259.131,681.961,259.131,693.363,258.463C704.766,257.794,711.789,256.457,715.301,255.789L718.813,255.12" id="gd30-L_F2_R2_0" class=" edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" data-edge="true" data-et="edge" data-id="L_F2_R2_0" data-points="W3sieCI6NTUwLjk3MTgwMjgzMTc0NDksInkiOjI0MC44MTg3NX0seyJ4Ijo2MDMuMDU0Njg3NSwieSI6MjU5LjEzMTI1fSx7IngiOjY1MC4zOTg0Mzc1LCJ5IjoyNTkuMTMxMjV9LHsieCI6Njk3Ljc0MjE4NzUsInkiOjI1OS4xMzEyNX0seyJ4Ijo3MjIuNzQyMTg3NSwieSI6MjU0LjM3MjUwMTc4ODAxOTR9XQ==" data-look="classic" marker-end="url(#gd30_flowchart-v2-pointEnd)" style=";"></path></g><g class="edgeLabels"><g class="edgeLabel" transform="translate(313.48046875, 100.28125)"><g class="label" data-id="L_M1_F1_0" transform="translate(0, -10.4609375)"><g><rect class="background" x="-22.11328125" y="-0.8515625" width="44.2265625" height="22.625"></rect><text y="-10.1" text-anchor="middle"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em" text-anchor="middle"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">write</tspan></tspan></text></g></g></g><g class="edgeLabel" transform="translate(313.48046875, 216.50625)"><g class="label" data-id="L_M2_F2_0" transform="translate(0, -10.4609375)"><g><rect class="background" x="-22.11328125" y="-0.8515625" width="44.2265625" height="22.625"></rect><text y="-10.1" text-anchor="middle"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em" text-anchor="middle"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">write</tspan></tspan></text></g></g></g><g class="edgeLabel" transform="translate(650.3984375, 57.65624999999999)"><g class="label" data-id="L_F1_R1_0" transform="translate(0, -10.4609375)"><g><rect class="background" x="-22.34375" y="-0.8515625" width="44.6875" height="22.625"></rect><text y="-10.1" text-anchor="middle"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em" text-anchor="middle"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">fetch</tspan></tspan></text></g></g></g><g class="edgeLabel" transform="translate(650.3984375, 179.70624999999998)"><g class="label" data-id="L_F1_R2_0" transform="translate(0, -10.4609375)"><g><rect class="background" x="-22.34375" y="-0.8515625" width="44.6875" height="22.625"></rect><text y="-10.1" text-anchor="middle"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em" text-anchor="middle"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">fetch</tspan></tspan></text></g></g></g><g class="edgeLabel" transform="translate(650.3984375, 137.08124999999998)"><g class="label" data-id="L_F2_R1_0" transform="translate(0, -10.4609375)"><g><rect class="background" x="-22.34375" y="-0.8515625" width="44.6875" height="22.625"></rect><text y="-10.1" text-anchor="middle"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em" text-anchor="middle"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">fetch</tspan></tspan></text></g></g></g><g class="edgeLabel" transform="translate(650.3984375, 259.13125)"><g class="label" data-id="L_F2_R2_0" transform="translate(0, -10.4609375)"><g><rect class="background" x="-22.34375" y="-0.8515625" width="44.6875" height="22.625"></rect><text y="-10.1" text-anchor="middle"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em" text-anchor="middle"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">fetch</tspan></tspan></text></g></g></g></g><g class="nodes"><g class="node default " id="gd30-flowchart-M1-0" data-look="classic" transform="translate(137.18359375, 100.28125)"><rect class="basic label-container" x="-104.18359375" y="-33.1125" width="208.3671875" height="66.225"></rect><g class="label" transform="translate(0, -18.1125)"><rect></rect><g><rect class="background" style="stroke: none"></rect><text y="-10.1"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">Map</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> task</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> 1</tspan></tspan><tspan class="text-outer-tspan row" x="0" y="1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">sort</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> by</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> partition</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> id</tspan></tspan></text></g></g></g><g class="node default " id="gd30-flowchart-M2-1" data-look="classic" transform="translate(137.18359375, 216.50625)"><rect class="basic label-container" x="-104.18359375" y="-33.1125" width="208.3671875" height="66.225"></rect><g class="label" transform="translate(0, -18.1125)"><rect></rect><g><rect class="background" style="stroke: none"></rect><text y="-10.1"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">Map</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> task</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> 2</tspan></tspan><tspan class="text-outer-tspan row" x="0" y="1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">sort</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> by</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> partition</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> id</tspan></tspan></text></g></g></g><g class="node default " id="gd30-flowchart-F1-2" data-look="classic" transform="translate(481.82421875, 100.28125)"><rect class="basic label-container" x="-96.23046875" y="-24.3125" width="192.4609375" height="48.625"></rect><g class="label" transform="translate(0, -9.3125)"><rect></rect><g><rect class="background" style="stroke: none"></rect><text y="-10.1"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">One</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> file</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> per</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> task</tspan></tspan></text></g></g></g><g class="node default " id="gd30-flowchart-F2-3" data-look="classic" transform="translate(481.82421875, 216.50625)"><rect class="basic label-container" x="-96.23046875" y="-24.3125" width="192.4609375" height="48.625"></rect><g class="label" transform="translate(0, -9.3125)"><rect></rect><g><rect class="background" style="stroke: none"></rect><text y="-10.1"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">One</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> file</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> per</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> task</tspan></tspan></text></g></g></g><g class="node default " id="gd30-flowchart-R1-4" data-look="classic" transform="translate(809.70703125, 78.96875)"><rect class="basic label-container" x="-86.96484375" y="-24.3125" width="173.9296875" height="48.625"></rect><g class="label" transform="translate(0, -9.3125)"><rect></rect><g><rect class="background" style="stroke: none"></rect><text y="-10.1"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">Reduce</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> task</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> 1</tspan></tspan></text></g></g></g><g class="node default " id="gd30-flowchart-R2-5" data-look="classic" transform="translate(809.70703125, 237.81875)"><rect class="basic label-container" x="-86.96484375" y="-24.3125" width="173.9296875" height="48.625"></rect><g class="label" transform="translate(0, -9.3125)"><rect></rect><g><rect class="background" style="stroke: none"></rect><text y="-10.1"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">Reduce</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> task</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> 2</tspan></tspan></text></g></g></g></g></g></g><defs><filter id="gd30-drop-shadow" height="130%" width="130%"><feDropShadow dx="4" dy="4" stdDeviation="0" flood-opacity="0.06" flood-color="#000000"></feDropShadow></filter></defs><defs><filter id="gd30-drop-shadow-small" height="150%" width="150%"><feDropShadow dx="2" dy="2" stdDeviation="0" flood-opacity="0.06" flood-color="#000000"></feDropShadow></filter></defs><linearGradient id="gd30-gradient" gradientUnits="objectBoundingBox" x1="0%" y1="0%" x2="100%" y2="0%"><stop offset="0%" stop-color="#3a4a52" stop-opacity="1"></stop><stop offset="100%" stop-color="hsl(200, 0%, 0%)" stop-opacity="1"></stop></linearGradient></svg>
@@ -0,0 +1 @@
1
+ <svg id="gd31" width="100%" xmlns="http://www.w3.org/2000/svg" class="flowchart" viewBox="-8 -17.3125 693.91015625 651.8296875" role="graphics-document document" aria-roledescription="flowchart-v2" style="max-width: 693.91015625px;"><style>#gd31{font-family:Recursive,ui-sans-serif,system-ui,-apple-system,sans-serif;font-size:16px;fill:#151b1e;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#gd31 .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#gd31 .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#gd31 .error-icon{fill:#eef1f6;}#gd31 .error-text{fill:#110e09;stroke:#110e09;}#gd31 .edge-thickness-normal{stroke-width:1px;}#gd31 .edge-thickness-thick{stroke-width:3.5px;}#gd31 .edge-pattern-solid{stroke-dasharray:0;}#gd31 .edge-thickness-invisible{stroke-width:0;fill:none;}#gd31 .edge-pattern-dashed{stroke-dasharray:3;}#gd31 .edge-pattern-dotted{stroke-dasharray:2;}#gd31 .marker{fill:#4f5f60;stroke:#4f5f60;}#gd31 .marker.cross{stroke:#4f5f60;}#gd31 svg{font-family:Recursive,ui-sans-serif,system-ui,-apple-system,sans-serif;font-size:16px;}#gd31 p{margin:0;}#gd31 .label{font-family:Recursive,ui-sans-serif,system-ui,-apple-system,sans-serif;color:#151b1e;}#gd31 .cluster-label text{fill:#151b1e;}#gd31 .cluster-label span{color:#151b1e;}#gd31 .cluster-label span p{background-color:transparent;}#gd31 .label text,#gd31 span{fill:#151b1e;color:#151b1e;}#gd31 .node rect,#gd31 .node circle,#gd31 .node ellipse,#gd31 .node polygon,#gd31 .node path{fill:#ffffff;stroke:#9aa8a3;stroke-width:1px;}#gd31 .rough-node .label text,#gd31 .node .label text,#gd31 .image-shape .label,#gd31 .icon-shape .label{text-anchor:middle;}#gd31 .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#gd31 .rough-node .label,#gd31 .node .label,#gd31 .image-shape .label,#gd31 .icon-shape .label{text-align:center;}#gd31 .node.clickable{cursor:pointer;}#gd31 .root .anchor path{fill:#4f5f60!important;stroke-width:0;stroke:#4f5f60;}#gd31 .arrowheadPath{fill:rgba(255, 255, 255, 0);}#gd31 .edgePath .path{stroke:#4f5f60;stroke-width:1px;}#gd31 .flowchart-link{stroke:#4f5f60;fill:none;}#gd31 .edgeLabel{background-color:#eef1f6;text-align:center;}#gd31 .edgeLabel p{background-color:#eef1f6;}#gd31 .edgeLabel rect{opacity:0.5;background-color:#eef1f6;fill:#eef1f6;}#gd31 .labelBkg{background-color:rgba(238, 241, 246, 0.5);}#gd31 .cluster rect{fill:#f2f5f9;stroke:#dbe2df;stroke-width:1px;}#gd31 .cluster text{fill:#151b1e;}#gd31 .cluster span{color:#151b1e;}#gd31 div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:Recursive,ui-sans-serif,system-ui,-apple-system,sans-serif;font-size:12px;background:#eef1f6;border:1px solid hsl(217.5, 0%, 84.9019607843%);border-radius:2px;pointer-events:none;z-index:100;}#gd31 .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#151b1e;}#gd31 rect.text{fill:none;stroke-width:0;}#gd31 .icon-shape,#gd31 .image-shape{background-color:#eef1f6;text-align:center;}#gd31 .icon-shape p,#gd31 .image-shape p{background-color:#eef1f6;padding:2px;}#gd31 .icon-shape .label rect,#gd31 .image-shape .label rect{opacity:0.5;background-color:#eef1f6;fill:#eef1f6;}#gd31 .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#gd31 .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#gd31 .node .neo-node{stroke:#9aa8a3;}#gd31 [data-look=&quot;neo&quot;].node rect,#gd31 [data-look=&quot;neo&quot;].cluster rect,#gd31 [data-look=&quot;neo&quot;].node polygon{stroke:url(#gd31-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#gd31 [data-look=&quot;neo&quot;].swimlane.cluster rect{filter:none;}#gd31 [data-look=&quot;neo&quot;].node path{stroke:url(#gd31-gradient);stroke-width:1px;}#gd31 [data-look=&quot;neo&quot;].node .outer-path{filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#gd31 [data-look=&quot;neo&quot;].node .neo-line path{stroke:#9aa8a3;filter:none;}#gd31 [data-look=&quot;neo&quot;].node circle{stroke:url(#gd31-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#gd31 [data-look=&quot;neo&quot;].node circle .state-start{fill:#000000;}#gd31 [data-look=&quot;neo&quot;].icon-shape .icon{fill:url(#gd31-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#gd31 [data-look=&quot;neo&quot;].icon-shape .icon-neo path{stroke:url(#gd31-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#gd31 :root{--mermaid-font-family:Recursive,ui-sans-serif,system-ui,-apple-system,sans-serif;}</style><g><marker id="gd31_flowchart-v2-pointEnd" class="marker flowchart-v2" viewBox="0 0 10 10" refX="5" refY="5" markerUnits="userSpaceOnUse" markerWidth="8" markerHeight="8" orient="auto"><path d="M 0 0 L 10 5 L 0 10 z" class="arrowMarkerPath" style="stroke-width:1;stroke-dasharray:1,0"></path></marker><marker id="gd31_flowchart-v2-pointStart" class="marker flowchart-v2" viewBox="0 0 10 10" refX="4.5" refY="5" markerUnits="userSpaceOnUse" markerWidth="8" markerHeight="8" orient="auto"><path d="M 0 5 L 10 10 L 10 0 z" class="arrowMarkerPath" style="stroke-width:1;stroke-dasharray:1,0"></path></marker><marker id="gd31_flowchart-v2-pointEnd-margin" class="marker flowchart-v2" viewBox="0 0 11.5 14" refX="11.5" refY="7" markerUnits="userSpaceOnUse" markerWidth="10.5" markerHeight="14" orient="auto"><path d="M 0 0 L 11.5 7 L 0 14 z" class="arrowMarkerPath" style="stroke-width:0;stroke-dasharray:1,0"></path></marker><marker id="gd31_flowchart-v2-pointStart-margin" class="marker flowchart-v2" viewBox="0 0 11.5 14" refX="1" refY="7" markerUnits="userSpaceOnUse" markerWidth="11.5" markerHeight="14" orient="auto"><polygon points="0,7 11.5,14 11.5,0" class="arrowMarkerPath" style="stroke-width:0;stroke-dasharray:1,0"></polygon></marker><marker id="gd31_flowchart-v2-circleEnd" class="marker flowchart-v2" viewBox="0 0 10 10" refX="11" refY="5" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"><circle cx="5" cy="5" r="5" class="arrowMarkerPath" style="stroke-width:1;stroke-dasharray:1,0"></circle></marker><marker id="gd31_flowchart-v2-circleStart" class="marker flowchart-v2" viewBox="0 0 10 10" refX="-1" refY="5" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"><circle cx="5" cy="5" r="5" class="arrowMarkerPath" style="stroke-width:1;stroke-dasharray:1,0"></circle></marker><marker id="gd31_flowchart-v2-circleEnd-margin" class="marker flowchart-v2" viewBox="0 0 10 10" refY="5" refX="12.25" markerUnits="userSpaceOnUse" markerWidth="14" markerHeight="14" orient="auto"><circle cx="5" cy="5" r="5" class="arrowMarkerPath" style="stroke-width:0;stroke-dasharray:1,0"></circle></marker><marker id="gd31_flowchart-v2-circleStart-margin" class="marker flowchart-v2" viewBox="0 0 10 10" refX="-2" refY="5" markerUnits="userSpaceOnUse" markerWidth="14" markerHeight="14" orient="auto"><circle cx="5" cy="5" r="5" class="arrowMarkerPath" style="stroke-width:0;stroke-dasharray:1,0"></circle></marker><marker id="gd31_flowchart-v2-crossEnd" class="marker cross flowchart-v2" viewBox="0 0 11 11" refX="12" refY="5.2" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"><path d="M 1,1 l 9,9 M 10,1 l -9,9" class="arrowMarkerPath" style="stroke-width:2;stroke-dasharray:1,0"></path></marker><marker id="gd31_flowchart-v2-crossStart" class="marker cross flowchart-v2" viewBox="0 0 11 11" refX="-1" refY="5.2" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"><path d="M 1,1 l 9,9 M 10,1 l -9,9" class="arrowMarkerPath" style="stroke-width:2;stroke-dasharray:1,0"></path></marker><marker id="gd31_flowchart-v2-crossEnd-margin" class="marker cross flowchart-v2" viewBox="0 0 15 15" refX="17.7" refY="7.5" markerUnits="userSpaceOnUse" markerWidth="12" markerHeight="12" orient="auto"><path d="M 1,1 L 14,14 M 1,14 L 14,1" class="arrowMarkerPath" style="stroke-width:2.5"></path></marker><marker id="gd31_flowchart-v2-crossStart-margin" class="marker cross flowchart-v2" viewBox="0 0 15 15" refX="-3.5" refY="7.5" markerUnits="userSpaceOnUse" markerWidth="12" markerHeight="12" orient="auto"><path d="M 1,1 L 14,14 M 1,14 L 14,1" class="arrowMarkerPath" style="stroke-width:2.5;stroke-dasharray:1,0"></path></marker><g class="root"><g class="clusters"></g><g class="edgePaths"><path d="M369.43,56.625L369.43,60.792C369.43,64.958,369.43,73.292,369.43,80.958C369.43,88.625,369.43,95.625,369.43,99.125L369.43,102.625" id="gd31-L_S_C_0" class=" edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" data-edge="true" data-et="edge" data-id="L_S_C_0" data-points="W3sieCI6MzY5LjQyOTY4NzUsInkiOjU2LjYyNX0seyJ4IjozNjkuNDI5Njg3NSwieSI6ODEuNjI1fSx7IngiOjM2OS40Mjk2ODc0OTk5OTk5LCJ5IjoxMDYuNjI1MDAwMDAwMDAwMDF9XQ==" data-look="classic" marker-end="url(#gd31_flowchart-v2-pointEnd)" style=";"></path><path d="M297.508,281.92L270.366,301.426C243.224,320.932,188.94,359.943,161.798,387.768C134.656,415.592,134.656,432.23,134.656,440.548L134.656,448.867" id="gd31-L_C_SKEW_0" class=" edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" data-edge="true" data-et="edge" data-id="L_C_SKEW_0" data-points="W3sieCI6Mjk3LjUwNzk4Mjk2MjA4MTI2LCJ5IjoyODEuOTIwNDgyOTYyMDgxMn0seyJ4IjoxMzQuNjU2MjUsInkiOjM5OC45NTQ2ODc1MDAwMDAwM30seyJ4IjoxMzQuNjU2MjUsInkiOjQ1Mi44NjcxODc1MDAwMDAwNn1d" data-look="classic" marker-end="url(#gd31_flowchart-v2-pointEnd)" style=";"></path><path d="M369.43,353.842L369.43,361.361C369.43,368.88,369.43,383.917,369.43,399.755C369.43,415.592,369.43,432.23,369.43,440.548L369.43,448.867" id="gd31-L_C_VOL_0" class=" edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" data-edge="true" data-et="edge" data-id="L_C_VOL_0" data-points="W3sieCI6MzY5LjQyOTY4NzUsInkiOjM1My44NDIxODc1MDAwMDAxfSx7IngiOjM2OS40Mjk2ODc1LCJ5IjozOTguOTU0Njg3NTAwMDAwMDN9LHsieCI6MzY5LjQyOTY4NzUsInkiOjQ1Mi44NjcxODc1MDAwMDAwNn1d" data-look="classic" marker-end="url(#gd31_flowchart-v2-pointEnd)" style=";"></path><path d="M437.833,285.439L461.276,304.358C484.718,323.277,531.603,361.116,555.046,386.887C578.488,412.659,578.488,426.363,578.488,433.215L578.488,440.067" id="gd31-L_C_UNC_0" class=" edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" data-edge="true" data-et="edge" data-id="L_C_UNC_0" data-points="W3sieCI6NDM3LjgzMzE1MDI1ODQxMDEsInkiOjI4NS40Mzg3MjQ3NDE1ODk5N30seyJ4Ijo1NzguNDg4MjgxMjUsInkiOjM5OC45NTQ2ODc1MDAwMDAwM30seyJ4Ijo1NzguNDg4MjgxMjUsInkiOjQ0NC4wNjcxODc1MDAwMDAwNX1d" data-look="classic" marker-end="url(#gd31_flowchart-v2-pointEnd)" style=";"></path><path d="M134.656,501.492L134.656,507.126C134.656,512.759,134.656,524.026,134.656,533.159C134.656,542.292,134.656,549.292,134.656,552.792L134.656,556.292" id="gd31-L_SKEW_SFIX_0" class=" edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" data-edge="true" data-et="edge" data-id="L_SKEW_SFIX_0" data-points="W3sieCI6MTM0LjY1NjI1LCJ5Ijo1MDEuNDkyMTg3NTAwMDAwMDZ9LHsieCI6MTM0LjY1NjI1LCJ5Ijo1MzUuMjkyMTg3NTAwMDAwMX0seyJ4IjoxMzQuNjU2MjUsInkiOjU2MC4yOTIxODc1MDAwMDAxfV0=" data-look="classic" marker-end="url(#gd31_flowchart-v2-pointEnd)" style=";"></path><path d="M369.43,501.492L369.43,507.126C369.43,512.759,369.43,524.026,378.98,534.968C388.53,545.911,407.631,556.53,417.181,561.839L426.731,567.149" id="gd31-L_VOL_VFIX_0" class=" edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" data-edge="true" data-et="edge" data-id="L_VOL_VFIX_0" data-points="W3sieCI6MzY5LjQyOTY4NzUsInkiOjUwMS40OTIxODc1MDAwMDAwNn0seyJ4IjozNjkuNDI5Njg3NSwieSI6NTM1LjI5MjE4NzUwMDAwMDF9LHsieCI6NDMwLjIyNzExMDMzMjg2NzI2LCJ5Ijo1NjkuMDkyMTg3NX1d" data-look="classic" marker-end="url(#gd31_flowchart-v2-pointEnd)" style=";"></path><path d="M578.488,510.292L578.488,514.459C578.488,518.626,578.488,526.959,568.938,536.435C559.388,545.911,540.287,556.53,530.737,561.839L521.187,567.149" id="gd31-L_UNC_VFIX_0" class=" edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" data-edge="true" data-et="edge" data-id="L_UNC_VFIX_0" data-points="W3sieCI6NTc4LjQ4ODI4MTI1LCJ5Ijo1MTAuMjkyMTg3NTAwMDAwMDd9LHsieCI6NTc4LjQ4ODI4MTI1LCJ5Ijo1MzUuMjkyMTg3NTAwMDAwMX0seyJ4Ijo1MTcuNjkwODU4NDE3MTMyNywieSI6NTY5LjA5MjE4NzV9XQ==" data-look="classic" marker-end="url(#gd31_flowchart-v2-pointEnd)" style=";"></path></g><g class="edgeLabels"><g class="edgeLabel"><g class="label" data-id="L_S_C_0" transform="translate(0, -10.4609375)"><text y="-10.1" text-anchor="middle"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em" text-anchor="middle"></tspan></text></g></g><g><rect class="background" style="stroke: none"></rect></g><g class="edgeLabel" transform="translate(134.65625, 398.95468750000003)"><g class="label" data-id="L_C_SKEW_0" transform="translate(0, -19.2609375)"><g><rect class="background" x="-62.83203125" y="-0.8515625" width="125.6640625" height="40.225"></rect><text y="-10.1" text-anchor="middle"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em" text-anchor="middle"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">≥</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> 80%</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> of</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> tasks</tspan></tspan><tspan class="text-outer-tspan row" x="0" y="1em" dy="1.1em" text-anchor="middle"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">have</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> zero</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> spill</tspan></tspan></text></g></g></g><g class="edgeLabel" transform="translate(369.4296875, 398.95468750000003)"><g class="label" data-id="L_C_VOL_0" transform="translate(0, -19.2609375)"><g><rect class="background" x="-62.83203125" y="-0.8515625" width="125.6640625" height="40.225"></rect><text y="-10.1" text-anchor="middle"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em" text-anchor="middle"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">&lt;</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> 20%</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> of</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> tasks</tspan></tspan><tspan class="text-outer-tspan row" x="0" y="1em" dy="1.1em" text-anchor="middle"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">have</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> zero</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> spill</tspan></tspan></text></g></g></g><g class="edgeLabel" transform="translate(578.48828125, 398.95468750000003)"><g class="label" data-id="L_C_UNC_0" transform="translate(0, -10.4609375)"><g><rect class="background" x="-71.078125" y="-0.8515625" width="142.15625" height="22.625"></rect><text y="-10.1" text-anchor="middle"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em" text-anchor="middle"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">Neither</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> condition</tspan></tspan></text></g></g></g><g class="edgeLabel"><g class="label" data-id="L_SKEW_SFIX_0" transform="translate(0, -10.4609375)"><text y="-10.1" text-anchor="middle"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em" text-anchor="middle"></tspan></text></g></g><g><rect class="background" style="stroke: none"></rect></g><g class="edgeLabel"><g class="label" data-id="L_VOL_VFIX_0" transform="translate(0, -10.4609375)"><text y="-10.1" text-anchor="middle"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em" text-anchor="middle"></tspan></text></g></g><g><rect class="background" style="stroke: none"></rect></g><g class="edgeLabel"><g class="label" data-id="L_UNC_VFIX_0" transform="translate(0, -10.4609375)"><text y="-10.1" text-anchor="middle"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em" text-anchor="middle"></tspan></text></g></g><g><rect class="background" style="stroke: none"></rect></g></g><g class="nodes"><g class="node default " id="gd31-flowchart-S-0" data-look="classic" transform="translate(369.4296875, 32.3125)"><rect class="basic label-container" x="-129.578125" y="-24.3125" width="259.15625" height="48.625"></rect><g class="label" transform="translate(0, -9.3125)"><rect></rect><g><rect class="background" style="stroke: none"></rect><text y="-10.1"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">memoryBytesSpilled</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> &gt;</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> 0</tspan></tspan></text></g></g></g><g class="node default " id="gd31-flowchart-C-1" data-look="classic" transform="translate(369.4296875, 230.23359375)"><polygon points="123.60859375,0 247.2171875,-123.60859375 123.60859375,-247.2171875 0,-123.60859375" class="label-container" transform="translate(-123.10859375, 123.60859375)"></polygon><g class="label" transform="translate(0, -18.1125)"><rect></rect><g><rect class="background" style="stroke: none"></rect><text y="-10.1"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">How</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> is</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> the</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> spill</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> spread</tspan></tspan><tspan class="text-outer-tspan row" x="0" y="1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">across</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> tasks?</tspan></tspan></text></g></g></g><g class="node default " id="gd31-flowchart-SKEW-3" data-look="classic" transform="translate(134.65625, 477.17968750000006)"><rect class="basic label-container" x="-50.265625" y="-24.3125" width="100.53125" height="48.625"></rect><g class="label" transform="translate(0, -9.3125)"><rect></rect><g><rect class="background" style="stroke: none"></rect><text y="-10.1"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">skew</tspan></tspan></text></g></g></g><g class="node default " id="gd31-flowchart-VOL-5" data-look="classic" transform="translate(369.4296875, 477.17968750000006)"><rect class="basic label-container" x="-59.63671875" y="-24.3125" width="119.2734375" height="48.625"></rect><g class="label" transform="translate(0, -9.3125)"><rect></rect><g><rect class="background" style="stroke: none"></rect><text y="-10.1"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">volume</tspan></tspan></text></g></g></g><g class="node default " id="gd31-flowchart-UNC-7" data-look="classic" transform="translate(578.48828125, 477.17968750000006)"><rect class="basic label-container" x="-99.421875" y="-33.1125" width="198.84375" height="66.225"></rect><g class="label" transform="translate(0, -18.1125)"><rect></rect><g><rect class="background" style="stroke: none"></rect><text y="-10.1"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">unclassified</tspan></tspan><tspan class="text-outer-tspan row" x="0" y="1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">(treat</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> as</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> volume)</tspan></tspan></text></g></g></g><g class="node default " id="gd31-flowchart-SFIX-9" data-look="classic" transform="translate(134.65625, 593.4046875)"><rect class="basic label-container" x="-126.65625" y="-33.1125" width="253.3125" height="66.225"></rect><g class="label" transform="translate(0, -18.1125)"><rect></rect><g><rect class="background" style="stroke: none"></rect><text y="-10.1"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">Fix</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> the</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> data</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> shape:</tspan></tspan><tspan class="text-outer-tspan row" x="0" y="1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">salting</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> or</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> AQE</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> skew</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> join</tspan></tspan></text></g></g></g><g class="node default " id="gd31-flowchart-VFIX-11" data-look="classic" transform="translate(473.958984375, 593.4046875)"><rect class="basic label-container" x="-132.98828125" y="-24.3125" width="265.9765625" height="48.625"></rect><g class="label" transform="translate(0, -9.3125)"><rect></rect><g><rect class="background" style="stroke: none"></rect><text y="-10.1"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">Add</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> partitions</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> or</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> memory</tspan></tspan></text></g></g></g></g></g></g><defs><filter id="gd31-drop-shadow" height="130%" width="130%"><feDropShadow dx="4" dy="4" stdDeviation="0" flood-opacity="0.06" flood-color="#000000"></feDropShadow></filter></defs><defs><filter id="gd31-drop-shadow-small" height="150%" width="150%"><feDropShadow dx="2" dy="2" stdDeviation="0" flood-opacity="0.06" flood-color="#000000"></feDropShadow></filter></defs><linearGradient id="gd31-gradient" gradientUnits="objectBoundingBox" x1="0%" y1="0%" x2="100%" y2="0%"><stop offset="0%" stop-color="#9aa8a3" stop-opacity="1"></stop><stop offset="100%" stop-color="hsl(214.2857142857, 0%, 86.2745098039%)" stop-opacity="1"></stop></linearGradient></svg>
@@ -0,0 +1 @@
1
+ <svg id="gd32" width="100%" xmlns="http://www.w3.org/2000/svg" class="flowchart" viewBox="-8 -17.3125 693.91015625 651.8296875" role="graphics-document document" aria-roledescription="flowchart-v2" style="max-width: 693.91015625px;"><style>#gd32{font-family:Recursive,ui-sans-serif,system-ui,-apple-system,sans-serif;font-size:16px;fill:#f4f4f5;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#gd32 .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#gd32 .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#gd32 .error-icon{fill:#1a232f;}#gd32 .error-text{fill:#e5dcd0;stroke:#e5dcd0;}#gd32 .edge-thickness-normal{stroke-width:1px;}#gd32 .edge-thickness-thick{stroke-width:3.5px;}#gd32 .edge-pattern-solid{stroke-dasharray:0;}#gd32 .edge-thickness-invisible{stroke-width:0;fill:none;}#gd32 .edge-pattern-dashed{stroke-dasharray:3;}#gd32 .edge-pattern-dotted{stroke-dasharray:2;}#gd32 .marker{fill:#a9b5b4;stroke:#a9b5b4;}#gd32 .marker.cross{stroke:#a9b5b4;}#gd32 svg{font-family:Recursive,ui-sans-serif,system-ui,-apple-system,sans-serif;font-size:16px;}#gd32 p{margin:0;}#gd32 .label{font-family:Recursive,ui-sans-serif,system-ui,-apple-system,sans-serif;color:#f4f4f5;}#gd32 .cluster-label text{fill:#f4f4f5;}#gd32 .cluster-label span{color:#f4f4f5;}#gd32 .cluster-label span p{background-color:transparent;}#gd32 .label text,#gd32 span{fill:#f4f4f5;color:#f4f4f5;}#gd32 .node rect,#gd32 .node circle,#gd32 .node ellipse,#gd32 .node polygon,#gd32 .node path{fill:#17202c;stroke:#3a4a52;stroke-width:1px;}#gd32 .rough-node .label text,#gd32 .node .label text,#gd32 .image-shape .label,#gd32 .icon-shape .label{text-anchor:middle;}#gd32 .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#gd32 .rough-node .label,#gd32 .node .label,#gd32 .image-shape .label,#gd32 .icon-shape .label{text-align:center;}#gd32 .node.clickable{cursor:pointer;}#gd32 .root .anchor path{fill:#a9b5b4!important;stroke-width:0;stroke:#a9b5b4;}#gd32 .arrowheadPath{fill:rgba(255, 255, 255, 0);}#gd32 .edgePath .path{stroke:#a9b5b4;stroke-width:1px;}#gd32 .flowchart-link{stroke:#a9b5b4;fill:none;}#gd32 .edgeLabel{background-color:#11171a;text-align:center;}#gd32 .edgeLabel p{background-color:#11171a;}#gd32 .edgeLabel rect{opacity:0.5;background-color:#11171a;fill:#11171a;}#gd32 .labelBkg{background-color:rgba(17, 23, 26, 0.5);}#gd32 .cluster rect{fill:#11171a;stroke:#233035;stroke-width:1px;}#gd32 .cluster text{fill:#f4f4f5;}#gd32 .cluster span{color:#f4f4f5;}#gd32 div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:Recursive,ui-sans-serif,system-ui,-apple-system,sans-serif;font-size:12px;background:#1a232f;border:1px solid hsl(214.2857142857, 0%, 4.3137254902%);border-radius:2px;pointer-events:none;z-index:100;}#gd32 .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#f4f4f5;}#gd32 rect.text{fill:none;stroke-width:0;}#gd32 .icon-shape,#gd32 .image-shape{background-color:#11171a;text-align:center;}#gd32 .icon-shape p,#gd32 .image-shape p{background-color:#11171a;padding:2px;}#gd32 .icon-shape .label rect,#gd32 .image-shape .label rect{opacity:0.5;background-color:#11171a;fill:#11171a;}#gd32 .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#gd32 .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#gd32 .node .neo-node{stroke:#3a4a52;}#gd32 [data-look=&quot;neo&quot;].node rect,#gd32 [data-look=&quot;neo&quot;].cluster rect,#gd32 [data-look=&quot;neo&quot;].node polygon{stroke:url(#gd32-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#gd32 [data-look=&quot;neo&quot;].swimlane.cluster rect{filter:none;}#gd32 [data-look=&quot;neo&quot;].node path{stroke:url(#gd32-gradient);stroke-width:1px;}#gd32 [data-look=&quot;neo&quot;].node .outer-path{filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#gd32 [data-look=&quot;neo&quot;].node .neo-line path{stroke:#3a4a52;filter:none;}#gd32 [data-look=&quot;neo&quot;].node circle{stroke:url(#gd32-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#gd32 [data-look=&quot;neo&quot;].node circle .state-start{fill:#000000;}#gd32 [data-look=&quot;neo&quot;].icon-shape .icon{fill:url(#gd32-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#gd32 [data-look=&quot;neo&quot;].icon-shape .icon-neo path{stroke:url(#gd32-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#gd32 :root{--mermaid-font-family:Recursive,ui-sans-serif,system-ui,-apple-system,sans-serif;}</style><g><marker id="gd32_flowchart-v2-pointEnd" class="marker flowchart-v2" viewBox="0 0 10 10" refX="5" refY="5" markerUnits="userSpaceOnUse" markerWidth="8" markerHeight="8" orient="auto"><path d="M 0 0 L 10 5 L 0 10 z" class="arrowMarkerPath" style="stroke-width:1;stroke-dasharray:1,0"></path></marker><marker id="gd32_flowchart-v2-pointStart" class="marker flowchart-v2" viewBox="0 0 10 10" refX="4.5" refY="5" markerUnits="userSpaceOnUse" markerWidth="8" markerHeight="8" orient="auto"><path d="M 0 5 L 10 10 L 10 0 z" class="arrowMarkerPath" style="stroke-width:1;stroke-dasharray:1,0"></path></marker><marker id="gd32_flowchart-v2-pointEnd-margin" class="marker flowchart-v2" viewBox="0 0 11.5 14" refX="11.5" refY="7" markerUnits="userSpaceOnUse" markerWidth="10.5" markerHeight="14" orient="auto"><path d="M 0 0 L 11.5 7 L 0 14 z" class="arrowMarkerPath" style="stroke-width:0;stroke-dasharray:1,0"></path></marker><marker id="gd32_flowchart-v2-pointStart-margin" class="marker flowchart-v2" viewBox="0 0 11.5 14" refX="1" refY="7" markerUnits="userSpaceOnUse" markerWidth="11.5" markerHeight="14" orient="auto"><polygon points="0,7 11.5,14 11.5,0" class="arrowMarkerPath" style="stroke-width:0;stroke-dasharray:1,0"></polygon></marker><marker id="gd32_flowchart-v2-circleEnd" class="marker flowchart-v2" viewBox="0 0 10 10" refX="11" refY="5" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"><circle cx="5" cy="5" r="5" class="arrowMarkerPath" style="stroke-width:1;stroke-dasharray:1,0"></circle></marker><marker id="gd32_flowchart-v2-circleStart" class="marker flowchart-v2" viewBox="0 0 10 10" refX="-1" refY="5" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"><circle cx="5" cy="5" r="5" class="arrowMarkerPath" style="stroke-width:1;stroke-dasharray:1,0"></circle></marker><marker id="gd32_flowchart-v2-circleEnd-margin" class="marker flowchart-v2" viewBox="0 0 10 10" refY="5" refX="12.25" markerUnits="userSpaceOnUse" markerWidth="14" markerHeight="14" orient="auto"><circle cx="5" cy="5" r="5" class="arrowMarkerPath" style="stroke-width:0;stroke-dasharray:1,0"></circle></marker><marker id="gd32_flowchart-v2-circleStart-margin" class="marker flowchart-v2" viewBox="0 0 10 10" refX="-2" refY="5" markerUnits="userSpaceOnUse" markerWidth="14" markerHeight="14" orient="auto"><circle cx="5" cy="5" r="5" class="arrowMarkerPath" style="stroke-width:0;stroke-dasharray:1,0"></circle></marker><marker id="gd32_flowchart-v2-crossEnd" class="marker cross flowchart-v2" viewBox="0 0 11 11" refX="12" refY="5.2" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"><path d="M 1,1 l 9,9 M 10,1 l -9,9" class="arrowMarkerPath" style="stroke-width:2;stroke-dasharray:1,0"></path></marker><marker id="gd32_flowchart-v2-crossStart" class="marker cross flowchart-v2" viewBox="0 0 11 11" refX="-1" refY="5.2" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"><path d="M 1,1 l 9,9 M 10,1 l -9,9" class="arrowMarkerPath" style="stroke-width:2;stroke-dasharray:1,0"></path></marker><marker id="gd32_flowchart-v2-crossEnd-margin" class="marker cross flowchart-v2" viewBox="0 0 15 15" refX="17.7" refY="7.5" markerUnits="userSpaceOnUse" markerWidth="12" markerHeight="12" orient="auto"><path d="M 1,1 L 14,14 M 1,14 L 14,1" class="arrowMarkerPath" style="stroke-width:2.5"></path></marker><marker id="gd32_flowchart-v2-crossStart-margin" class="marker cross flowchart-v2" viewBox="0 0 15 15" refX="-3.5" refY="7.5" markerUnits="userSpaceOnUse" markerWidth="12" markerHeight="12" orient="auto"><path d="M 1,1 L 14,14 M 1,14 L 14,1" class="arrowMarkerPath" style="stroke-width:2.5;stroke-dasharray:1,0"></path></marker><g class="root"><g class="clusters"></g><g class="edgePaths"><path d="M369.43,56.625L369.43,60.792C369.43,64.958,369.43,73.292,369.43,80.958C369.43,88.625,369.43,95.625,369.43,99.125L369.43,102.625" id="gd32-L_S_C_0" class=" edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" data-edge="true" data-et="edge" data-id="L_S_C_0" data-points="W3sieCI6MzY5LjQyOTY4NzUsInkiOjU2LjYyNX0seyJ4IjozNjkuNDI5Njg3NSwieSI6ODEuNjI1fSx7IngiOjM2OS40Mjk2ODc0OTk5OTk5LCJ5IjoxMDYuNjI1MDAwMDAwMDAwMDF9XQ==" data-look="classic" marker-end="url(#gd32_flowchart-v2-pointEnd)" style=";"></path><path d="M297.508,281.92L270.366,301.426C243.224,320.932,188.94,359.943,161.798,387.768C134.656,415.592,134.656,432.23,134.656,440.548L134.656,448.867" id="gd32-L_C_SKEW_0" class=" edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" data-edge="true" data-et="edge" data-id="L_C_SKEW_0" data-points="W3sieCI6Mjk3LjUwNzk4Mjk2MjA4MTI2LCJ5IjoyODEuOTIwNDgyOTYyMDgxMn0seyJ4IjoxMzQuNjU2MjUsInkiOjM5OC45NTQ2ODc1MDAwMDAwM30seyJ4IjoxMzQuNjU2MjUsInkiOjQ1Mi44NjcxODc1MDAwMDAwNn1d" data-look="classic" marker-end="url(#gd32_flowchart-v2-pointEnd)" style=";"></path><path d="M369.43,353.842L369.43,361.361C369.43,368.88,369.43,383.917,369.43,399.755C369.43,415.592,369.43,432.23,369.43,440.548L369.43,448.867" id="gd32-L_C_VOL_0" class=" edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" data-edge="true" data-et="edge" data-id="L_C_VOL_0" data-points="W3sieCI6MzY5LjQyOTY4NzUsInkiOjM1My44NDIxODc1MDAwMDAxfSx7IngiOjM2OS40Mjk2ODc1LCJ5IjozOTguOTU0Njg3NTAwMDAwMDN9LHsieCI6MzY5LjQyOTY4NzUsInkiOjQ1Mi44NjcxODc1MDAwMDAwNn1d" data-look="classic" marker-end="url(#gd32_flowchart-v2-pointEnd)" style=";"></path><path d="M437.833,285.439L461.276,304.358C484.718,323.277,531.603,361.116,555.046,386.887C578.488,412.659,578.488,426.363,578.488,433.215L578.488,440.067" id="gd32-L_C_UNC_0" class=" edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" data-edge="true" data-et="edge" data-id="L_C_UNC_0" data-points="W3sieCI6NDM3LjgzMzE1MDI1ODQxMDEsInkiOjI4NS40Mzg3MjQ3NDE1ODk5N30seyJ4Ijo1NzguNDg4MjgxMjUsInkiOjM5OC45NTQ2ODc1MDAwMDAwM30seyJ4Ijo1NzguNDg4MjgxMjUsInkiOjQ0NC4wNjcxODc1MDAwMDAwNX1d" data-look="classic" marker-end="url(#gd32_flowchart-v2-pointEnd)" style=";"></path><path d="M134.656,501.492L134.656,507.126C134.656,512.759,134.656,524.026,134.656,533.159C134.656,542.292,134.656,549.292,134.656,552.792L134.656,556.292" id="gd32-L_SKEW_SFIX_0" class=" edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" data-edge="true" data-et="edge" data-id="L_SKEW_SFIX_0" data-points="W3sieCI6MTM0LjY1NjI1LCJ5Ijo1MDEuNDkyMTg3NTAwMDAwMDZ9LHsieCI6MTM0LjY1NjI1LCJ5Ijo1MzUuMjkyMTg3NTAwMDAwMX0seyJ4IjoxMzQuNjU2MjUsInkiOjU2MC4yOTIxODc1MDAwMDAxfV0=" data-look="classic" marker-end="url(#gd32_flowchart-v2-pointEnd)" style=";"></path><path d="M369.43,501.492L369.43,507.126C369.43,512.759,369.43,524.026,378.98,534.968C388.53,545.911,407.631,556.53,417.181,561.839L426.731,567.149" id="gd32-L_VOL_VFIX_0" class=" edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" data-edge="true" data-et="edge" data-id="L_VOL_VFIX_0" data-points="W3sieCI6MzY5LjQyOTY4NzUsInkiOjUwMS40OTIxODc1MDAwMDAwNn0seyJ4IjozNjkuNDI5Njg3NSwieSI6NTM1LjI5MjE4NzUwMDAwMDF9LHsieCI6NDMwLjIyNzExMDMzMjg2NzI2LCJ5Ijo1NjkuMDkyMTg3NX1d" data-look="classic" marker-end="url(#gd32_flowchart-v2-pointEnd)" style=";"></path><path d="M578.488,510.292L578.488,514.459C578.488,518.626,578.488,526.959,568.938,536.435C559.388,545.911,540.287,556.53,530.737,561.839L521.187,567.149" id="gd32-L_UNC_VFIX_0" class=" edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" data-edge="true" data-et="edge" data-id="L_UNC_VFIX_0" data-points="W3sieCI6NTc4LjQ4ODI4MTI1LCJ5Ijo1MTAuMjkyMTg3NTAwMDAwMDd9LHsieCI6NTc4LjQ4ODI4MTI1LCJ5Ijo1MzUuMjkyMTg3NTAwMDAwMX0seyJ4Ijo1MTcuNjkwODU4NDE3MTMyNywieSI6NTY5LjA5MjE4NzV9XQ==" data-look="classic" marker-end="url(#gd32_flowchart-v2-pointEnd)" style=";"></path></g><g class="edgeLabels"><g class="edgeLabel"><g class="label" data-id="L_S_C_0" transform="translate(0, -10.4609375)"><text y="-10.1" text-anchor="middle"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em" text-anchor="middle"></tspan></text></g></g><g><rect class="background" style="stroke: none"></rect></g><g class="edgeLabel" transform="translate(134.65625, 398.95468750000003)"><g class="label" data-id="L_C_SKEW_0" transform="translate(0, -19.2609375)"><g><rect class="background" x="-62.83203125" y="-0.8515625" width="125.6640625" height="40.225"></rect><text y="-10.1" text-anchor="middle"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em" text-anchor="middle"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">≥</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> 80%</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> of</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> tasks</tspan></tspan><tspan class="text-outer-tspan row" x="0" y="1em" dy="1.1em" text-anchor="middle"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">have</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> zero</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> spill</tspan></tspan></text></g></g></g><g class="edgeLabel" transform="translate(369.4296875, 398.95468750000003)"><g class="label" data-id="L_C_VOL_0" transform="translate(0, -19.2609375)"><g><rect class="background" x="-62.83203125" y="-0.8515625" width="125.6640625" height="40.225"></rect><text y="-10.1" text-anchor="middle"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em" text-anchor="middle"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">&lt;</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> 20%</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> of</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> tasks</tspan></tspan><tspan class="text-outer-tspan row" x="0" y="1em" dy="1.1em" text-anchor="middle"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">have</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> zero</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> spill</tspan></tspan></text></g></g></g><g class="edgeLabel" transform="translate(578.48828125, 398.95468750000003)"><g class="label" data-id="L_C_UNC_0" transform="translate(0, -10.4609375)"><g><rect class="background" x="-71.078125" y="-0.8515625" width="142.15625" height="22.625"></rect><text y="-10.1" text-anchor="middle"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em" text-anchor="middle"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">Neither</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> condition</tspan></tspan></text></g></g></g><g class="edgeLabel"><g class="label" data-id="L_SKEW_SFIX_0" transform="translate(0, -10.4609375)"><text y="-10.1" text-anchor="middle"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em" text-anchor="middle"></tspan></text></g></g><g><rect class="background" style="stroke: none"></rect></g><g class="edgeLabel"><g class="label" data-id="L_VOL_VFIX_0" transform="translate(0, -10.4609375)"><text y="-10.1" text-anchor="middle"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em" text-anchor="middle"></tspan></text></g></g><g><rect class="background" style="stroke: none"></rect></g><g class="edgeLabel"><g class="label" data-id="L_UNC_VFIX_0" transform="translate(0, -10.4609375)"><text y="-10.1" text-anchor="middle"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em" text-anchor="middle"></tspan></text></g></g><g><rect class="background" style="stroke: none"></rect></g></g><g class="nodes"><g class="node default " id="gd32-flowchart-S-0" data-look="classic" transform="translate(369.4296875, 32.3125)"><rect class="basic label-container" x="-129.578125" y="-24.3125" width="259.15625" height="48.625"></rect><g class="label" transform="translate(0, -9.3125)"><rect></rect><g><rect class="background" style="stroke: none"></rect><text y="-10.1"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">memoryBytesSpilled</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> &gt;</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> 0</tspan></tspan></text></g></g></g><g class="node default " id="gd32-flowchart-C-1" data-look="classic" transform="translate(369.4296875, 230.23359375)"><polygon points="123.60859375,0 247.2171875,-123.60859375 123.60859375,-247.2171875 0,-123.60859375" class="label-container" transform="translate(-123.10859375, 123.60859375)"></polygon><g class="label" transform="translate(0, -18.1125)"><rect></rect><g><rect class="background" style="stroke: none"></rect><text y="-10.1"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">How</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> is</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> the</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> spill</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> spread</tspan></tspan><tspan class="text-outer-tspan row" x="0" y="1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">across</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> tasks?</tspan></tspan></text></g></g></g><g class="node default " id="gd32-flowchart-SKEW-3" data-look="classic" transform="translate(134.65625, 477.17968750000006)"><rect class="basic label-container" x="-50.265625" y="-24.3125" width="100.53125" height="48.625"></rect><g class="label" transform="translate(0, -9.3125)"><rect></rect><g><rect class="background" style="stroke: none"></rect><text y="-10.1"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">skew</tspan></tspan></text></g></g></g><g class="node default " id="gd32-flowchart-VOL-5" data-look="classic" transform="translate(369.4296875, 477.17968750000006)"><rect class="basic label-container" x="-59.63671875" y="-24.3125" width="119.2734375" height="48.625"></rect><g class="label" transform="translate(0, -9.3125)"><rect></rect><g><rect class="background" style="stroke: none"></rect><text y="-10.1"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">volume</tspan></tspan></text></g></g></g><g class="node default " id="gd32-flowchart-UNC-7" data-look="classic" transform="translate(578.48828125, 477.17968750000006)"><rect class="basic label-container" x="-99.421875" y="-33.1125" width="198.84375" height="66.225"></rect><g class="label" transform="translate(0, -18.1125)"><rect></rect><g><rect class="background" style="stroke: none"></rect><text y="-10.1"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">unclassified</tspan></tspan><tspan class="text-outer-tspan row" x="0" y="1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">(treat</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> as</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> volume)</tspan></tspan></text></g></g></g><g class="node default " id="gd32-flowchart-SFIX-9" data-look="classic" transform="translate(134.65625, 593.4046875)"><rect class="basic label-container" x="-126.65625" y="-33.1125" width="253.3125" height="66.225"></rect><g class="label" transform="translate(0, -18.1125)"><rect></rect><g><rect class="background" style="stroke: none"></rect><text y="-10.1"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">Fix</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> the</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> data</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> shape:</tspan></tspan><tspan class="text-outer-tspan row" x="0" y="1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">salting</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> or</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> AQE</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> skew</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> join</tspan></tspan></text></g></g></g><g class="node default " id="gd32-flowchart-VFIX-11" data-look="classic" transform="translate(473.958984375, 593.4046875)"><rect class="basic label-container" x="-132.98828125" y="-24.3125" width="265.9765625" height="48.625"></rect><g class="label" transform="translate(0, -9.3125)"><rect></rect><g><rect class="background" style="stroke: none"></rect><text y="-10.1"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">Add</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> partitions</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> or</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> memory</tspan></tspan></text></g></g></g></g></g></g><defs><filter id="gd32-drop-shadow" height="130%" width="130%"><feDropShadow dx="4" dy="4" stdDeviation="0" flood-opacity="0.06" flood-color="#000000"></feDropShadow></filter></defs><defs><filter id="gd32-drop-shadow-small" height="150%" width="150%"><feDropShadow dx="2" dy="2" stdDeviation="0" flood-opacity="0.06" flood-color="#000000"></feDropShadow></filter></defs><linearGradient id="gd32-gradient" gradientUnits="objectBoundingBox" x1="0%" y1="0%" x2="100%" y2="0%"><stop offset="0%" stop-color="#3a4a52" stop-opacity="1"></stop><stop offset="100%" stop-color="hsl(200, 0%, 0%)" stop-opacity="1"></stop></linearGradient></svg>