Why global standardization in Spark requires a shuffle-based aggregation and broadcast, not per-partition statistics.
You need to z-score standardize a numeric feature (x - mean) / std across a large Spark DataFrame, then join the scaled table to another feature table keyed on user_id. Which approach is both correct and most efficient at scale?