Spark中Shuffle的定义及相关数据传输判定技术咨询
关于Spark Shuffle与数据传输的技术疑问
我了解使用共分区(co-partitioned)DataFrame执行的join不属于宽转换(wide transformations)。
原论文中关于窄依赖(narrow dependencies)和宽依赖(wide dependencies)的定义如下:
narrow dependencies:父RDD的每个分区最多被子RDD的一个分区使用;
wide dependencies:父RDD的一个分区可能被多个子RDD分区依赖。
即便DataFrame是共分区的,也不代表对应分区位于同一节点。例如,df1的分区P1和df2的分区P1可能处于不同节点,因此join过程中仍需进行数据传输(如将df1的P1移动到df2的P1所在节点),但这并不被视为Shuffle。
现提出以下技术问题:
- 究竟什么是Shuffle?并非所有网络数据传输都属于Shuffle,其准确定义是什么?
- 哪些类型的数据传输会被视为Shuffle?是否仅涉及宽转换的数据传输才算?
内容的提问来源于stack exchange,提问作者Dhruv
相关产品推荐
相关产品推荐

