【问题标题】:What are the Spark transformations that cause a shuffle on Dataframes?哪些 Spark 转换会导致数据帧上的随机播放?
【发布时间】:2019-12-16 11:13:04
【问题描述】:

我在几个地方读到,应尽可能避免包含混洗阶段的转换,因为混洗涉及在节点之间通过网络发送数据,这可能会对程序产生很高的性能成本。

我一直在寻找可能导致 Spark 的 2.4+ 数据帧洗牌的 Spark 转换列表,而我想出的只是关于旧 RDD API 的 this question

【问题讨论】:

    标签: apache-spark apache-spark-sql


    【解决方案1】:

    这里是来自 DataFrame API(PySpark 2.4.4 的当前版本以及 Scala API 中的相应函数)的转换列表,通常可能会导致随机播放(但不一定,实际上这取决于您的数据是如何准备的(分桶)或从以前的一些转换中分区):

    • join(如果计划为 SortMergeJoin)
    • 使用distinct/dropDuplicates进行重复数据删除
    • 聚合使用groupBy
    • 使用Window.partitionBy() 与窗口函数进行聚合
    • 使用repartition / repartitionByRange 函数进行显式数据重新分区
    • 使用orderBy/sort转换进行全局排序
    • 使用subtract 减去两个数据帧
    • 使用countDistinct 计算列中的不同值

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-09-13
      • 1970-01-01
      • 1970-01-01
      • 2017-03-10
      • 2023-03-06
      • 2021-07-03
      • 2022-11-11
      相关资源
      最近更新 更多