我有两个关于 UnsafeShuffleWriter 的问题,UnsafeShuffleWriter当满足以下所有三个条件时将使用:
- shuffle 依赖项不指定聚合或输出排序。
- shuffle 序列化器支持序列化值的重定位(目前 KryoSerializer 和 Spark SQL 的自定义序列化器支持此功能)。
- shuffle 产生少于 16777216 个输出分区。
我对前两个条件感到困惑。
- 为什么 shuffle 依赖项不指定聚合或输出排序?我觉得用
UnsafeShuffleWritermapSideCombine=false还是挺好的,不管是指定聚合还是排序。
- 为什么序列化器必须支持序列化值的重定位,重定位将在何处使用?