Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Dataframe 数据帧是否按顺序合并?_Dataframe_Apache Spark_Rdd_Shuffle - Fatal编程技术网

Dataframe 数据帧是否按顺序合并?

Dataframe 数据帧是否按顺序合并?,dataframe,apache-spark,rdd,shuffle,Dataframe,Apache Spark,Rdd,Shuffle,我使用coalesce1将数据帧写入单个文件,如下所示 df.coalesce(1).write.format("csv") .option("header", true).mode("overwrite").save(output_path) 快速浏览一下该文件,可以看出订单被保留了,但情况总是这样吗?如果不保留该命令,我如何执行该命令?RDD的coalesce函数有一个额外的参数来禁止洗牌,但Dataframe的coalesce方法只接受一个参数。如果读取文件sc.read.text,

我使用coalesce1将数据帧写入单个文件,如下所示

df.coalesce(1).write.format("csv")
  .option("header", true).mode("overwrite").save(output_path)
快速浏览一下该文件,可以看出订单被保留了,但情况总是这样吗?如果不保留该命令,我如何执行该命令?RDD的coalesce函数有一个额外的参数来禁止洗牌,但Dataframe的coalesce方法只接受一个参数。

如果读取文件sc.read.text,Dataframe/Dataset/RDD的行将按照它们在文件中的顺序排列

list、map、filter、coalesce和flatMap保留顺序。 sortBy、partitionBy和join不保留顺序

原因是大多数DataFrame/Dataset/RDD操作在分区内的迭代器上工作。因此,映射或过滤器无法打乱顺序


在这种情况下,如果您选择使用HashPartitioner并调用DataFrame/Dataset/RDD上的invoke map,则会更改键。在这种情况下,您可以使用partitionBy通过随机播放来恢复分区。

我不这么认为,因为您如何知道合并将发生到哪个节点?

指定合并后的orderBy以强制执行排序可能是大祭司指示答案的时候了。我认为这需要一些努力来解决,虽然已经讨论过了。看看阿维耶采夫·德米特里的回答。目前似乎无法保证最终RDD的订单保留。这是负责合并算法的类