Dataframe是否按顺序合并?

1qczuiv0  于 2021-05-29  发布在  Spark
关注(0)|答案(2)|浏览(773)

我使用coalesce(1)将Dataframe写入单个文件,如下所示。

df.coalesce(1).write.format("csv")
  .option("header", true).mode("overwrite").save(output_path)

快速浏览一下文件就可以看出顺序是保留的,但总是这样吗?如果秩序得不到维护,我该如何执行?rdd的coalesce函数有一个额外的参数来禁止洗牌,但是dataframe的coalesce方法只需要一个参数。

sdnqo3pr

sdnqo3pr1#

如果你读了一个文件( sc.read.text )这条线 DataFrame/Dataset/RDD 会按照他们在档案里的顺序。 list, map, filter,coalesce and flatMap 一定要保持秩序。 sortBy, partitionBy and join 不要维持秩序。
原因是 DataFrame/Dataset/RDD 操作在分区内的迭代器上工作。所以Map或过滤器根本无法扰乱秩序。
如果你选择使用 HashPartitioner 以及调用 mapDataFrame/Dataset/RDD 会换钥匙的。在这种情况下,您可以使用 partitionBy 用洗牌来恢复分区。

6rvt4ljy

6rvt4ljy2#

我不这么认为,因为你怎么知道哪个节点的联合'到'将发生?

相关问题