关于 Spark UnsafeShuffleWriter

zcb*_*zfl 5 serialization scala apache-spark

我有两个关于 UnsafeShuffleWriter 的问题,UnsafeShuffleWriter当满足以下所有三个条件时将使用:

  1. shuffle 依赖项不指定聚合或输出排序。
  2. shuffle 序列化器支持序列化值的重定位(目前 KryoSerializer 和 Spark SQL 的自定义序列化器支持此功能)。
  3. shuffle 产生少于 16777216 个输出分区。

我对前两个条件感到困惑。

  1. 为什么 shuffle 依赖项不指定聚合或输出排序?我觉得用UnsafeShuffleWritermapSideCombine=false还是挺好的,不管是指定聚合还是排序。
  2. 为什么序列化器必须支持序列化值的重定位,重定位将在何处使用?