Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.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
Scala Spark仅保存(写入)拼花地板一个文件_Scala_Apache Spark_Parquet - Fatal编程技术网

Scala Spark仅保存(写入)拼花地板一个文件

Scala Spark仅保存(写入)拼花地板一个文件,scala,apache-spark,parquet,Scala,Apache Spark,Parquet,如果我写 dataFrame.write.format("parquet").mode("append").save("temp.parquet") 在临时拼花文件夹中 我得到了与行号相同的文件号 我想我不太了解拼花地板,但它是自然的吗?您可以将分区设置为1以保存为单个文件 dataFrame.repartition(1).write.format("parquet").mode("append").save("temp.parquet&quo

如果我写

dataFrame.write.format("parquet").mode("append").save("temp.parquet")
在临时拼花文件夹中 我得到了与行号相同的文件号


我想我不太了解拼花地板,但它是自然的吗?

您可以将分区设置为1以保存为单个文件

dataFrame.repartition(1).write.format("parquet").mode("append").save("temp.parquet")
写操作前使用

dataFrame.coalesce(1).write.format(“拼花”).mode(“append”).save(“临时拼花”)


编辑-1

仔细一看,do警告关于
合并

但是,如果您正在进行激烈的合并,例如,合并到numPartitions= 1,这可能会导致计算在较少的节点上进行 超出您喜欢的范围(例如,在numPartitions=1的情况下为一个节点)


因此,最好使用

尽管前面的答案是正确的,但您必须理解重新分区或合并到单个分区后出现的重新聚焦。您的所有数据都必须传输到单个工作者,以便立即将其写入单个文件

正如互联网上反复提到的那样,在这种情况下,尽管执行计划中添加了洗牌步骤,但仍应使用
重新分区。此步骤有助于使用群集的功能,而不是顺序合并文件


至少有一种选择值得一提。您可以编写一个简单的脚本,将所有文件合并为一个文件。这样,您将避免向集群的单个节点生成大量网络流量。

请注意,
重新分区(1)
应该在
写入之前出现,因为它是一种方法,而不是我在其他地方读到的联合更有效。我们应该相信谁?虽然
合并了
,但生成的分区不一定(事实上,不太可能)具有相同的大小。因此,它实际上是在较小的洗牌开销和(几乎)相同大小的分区之间进行权衡。[1] 因此,一般来说,只有在观察到退化时,才最好使用
合并
,并退回到
重新分区
[2],但是在
numPartitions=1
的特殊情况下,文档强调,
重新分区
将是一个更好的选择。我指的是洗牌,并一直认为这是最重要的方面,但我接受你的观点,这是我的观点。有意思。谢谢你y2k shubham,蓝色幻影我得到了我想要的!!谢谢你,巴塔约。现在我正在搜索重新分区和合并!!