Apache spark 写入前合并(1)数据帧是否对性能有任何影响?

Apache spark 写入前合并(1)数据帧是否对性能有任何影响?,apache-spark,dataframe,hdfs,parquet,Apache Spark,Dataframe,Hdfs,Parquet,在我将数据帧写入hdfs之前,我将合并(1)以使其只写入一个文件,这样在复制东西时很容易手动处理,从hdfs获取 我想用这个代码来写输出 outputData.coalesce(1).write.parquet(outputPath) (outputData是org.apache.spark.sql.DataFrame) 我想问一下,它们是否对性能有任何影响,而不是合并 outputData.write.parquet(outputPath) 我不建议这样做。分布式计算的全部目的是将数据和处

在我将数据帧写入hdfs之前,我将合并(1)以使其只写入一个文件,这样在复制东西时很容易手动处理,从hdfs获取

我想用这个代码来写输出

outputData.coalesce(1).write.parquet(outputPath)
(outputData是org.apache.spark.sql.DataFrame)

我想问一下,它们是否对性能有任何影响,而不是合并

outputData.write.parquet(outputPath)

我不建议这样做。分布式计算的全部目的是将数据和处理放在多台机器上,并利用多台机器(工作节点)的CPU/内存优势


在你的情况下,你试图把一切都放在一个地方。如果只想用一个分区写入单个文件,为什么需要分布式文件系统?性能可能是一个问题,但只有在对分布在集群上多个节点上的大量数据使用合并功能之前/之后进行检查后,才能对其进行评估

我不建议这样做。分布式计算的全部目的是将数据和处理放在多台机器上,并利用多台机器(工作节点)的CPU/内存优势


在你的情况下,你试图把一切都放在一个地方。如果只想用一个分区写入单个文件,为什么需要分布式文件系统?性能可能是一个问题,但只有在对分布在集群上多个节点上的大量数据使用合并功能之前/之后进行检查后,才能对其进行评估

虽然在处理海量数据时不建议使用coalesce(1),但当临时文件中有太多的小分区文件,并且文件移动需要花费相当多的时间才能将其移动到正确的目录中时,使用coalesce(1)会很方便。

虽然在处理海量数据时不建议使用coalesce(1)当临时文件中有太多的小分区文件,并且文件移动需要花费相当长的时间才能将它们移动到正确的目录中时,此方法非常方便。

是的,它将使用1个工作进程进行写入

因此,即使您提供10个CPU内核,它也将使用1个工作线程(单个分区)进行写入


如果文件非常大(10 gb或更大),则会出现问题。但是建议如果您有小文件(100 mb)

是的,它将使用1个工作进程进行写入

因此,即使您提供10个CPU内核,它也将使用1个工作线程(单个分区)进行写入

如果文件非常大(10 gb或更大),则会出现问题。但如果您有小文件(100 mb),则建议使用