Labs
Each lab takes under an hour on a laptop and turns a claim from this mechanism into a number you measured yourself.
- 1
Barriers multiply variance
Reproduce E[max]/E[mean] ≈ 1 + c·√(2 ln n) and the BSP rule that the penalty multiplies by the number of rounds.
SimulatePython with NumPy - 2
Measure the cost of a boundary: tuple-at-a-time against batches
See the "fixed cost per control transfer" with your own numbers.
MeasurePython with NumPy - 3
Find the best batch size on your machine
Check the claim "batch size is chosen so the working set stays in cache, about L1 size ÷ row width".
MeasurePython with NumPy - 4
Compute a compilation break-even
Turn "compilation has a break-even data volume" into a measured number.
MeasurePython with NumPy, numba - 5
Per-row UDF versus vectorized UDF
Score 5 million rows with x * 0.3 + 2.0 per row and vectorized in blocks of 100 to 1,000,000; and the time to read and write the data.
MeasurePython with pandas, NumPy, PyArrow - 6
Whole-query restart against task retry
Check that expected whole-query attempts grow like e^(nTλ).
SimulatePython - 7
The Zipf ceiling on data-parallel speedup
Turn "the largest partition is your serial fraction" into a number.
SimulatePython with NumPy - 8
Triage plot, salting and the join product
Classify three kinds of long tail, then fix skew by salting, and see that join skew multiplies.
SimulatePython with NumPy, matplotlib - 9
Many small reads against few large reads: the transfer floor
Measure the minimum efficient transfer size on your own disk, then compute a shuffle width ceiling from it.
MeasurePython - 10
When does shuffle compression pay? And a non-deterministic partition function
Measure codec throughput and ratio on shuffle-like data, then apply C > BW · r/(r−1).
Measure · Break itPython