【问题标题】:Does dataFrameWriter partitionBy shuffle the data?dataFrameWriter partitionBy 是否对数据进行洗牌?
【发布时间】:2017-02-09 20:46:37
【问题描述】:

我以一种方式对数据进行了分区,我只想将其分区为另一种。 所以它基本上会是这样的:

sqlContext.read().parquet("...").write().partitionBy("...").parquet("...")

我想知道这是否会触发 shuffle 或所有数据将在本地重新分区,因为在这种情况下,分区意味着 HDFS 中的一个目录,来自同一分区的数据不必位于同一节点上写在 HDFS 的同一个目录中。

【问题讨论】:

    标签: apache-spark hadoop apache-spark-sql hdfs partitioning


    【解决方案1】:

    parititionBybucketBy 都不会对数据进行洗牌。但在某些情况下,首先重新分区数据可能是个好主意:

    df.repartition(...).write.partitionBy(...)
    

    否则输出文件的数量受分区数 * 分区列的基数限制。

    【讨论】:

    • 我应该如何重新分区以避免这种情况?
    猜你喜欢
    • 2018-01-07
    • 2016-10-06
    • 2017-03-17
    • 1970-01-01
    • 2014-01-23
    • 1970-01-01
    • 2023-03-17
    • 2021-12-31
    • 1970-01-01
    相关资源
    最近更新 更多