我有一个我编写的spark-submit工作,它读取json docs的目录,使用数据框对它们进行一些处理,然后写入out目录。但是,出于某种原因,当我使用df.save或df.write方法时,它会创建单独的avro,parquet或json文件。
事实上,我甚至使用了saveAsTable方法,它在hive仓库中对parquet.gz文件做了同样的事情。
在我看来,这是低效的,并且否定了容器文件格式的使用。这是正确的吗?或者这是正常的行为以及我在HDFS中看到的抽象概念吗?
如果我说得对,这很糟糕,如何将数据框从多个文件写入单个文件?
答案 0 :(得分:2)
由于 @ zero323 因许多工作人员(支持容错)而告诉其正常行为。
我建议你写下所有的镶木地板或avro文件记录,其中包含avro通用记录,使用类似的东西
dataframe.write().mode(SaveMode.Append).
format(FILE_FORMAT).partitionBy("parameter1", "parameter2").save(path);
但它不会写入单个文件,但会将类似的Avro Generic记录分组到一个文件(可能是中等大小的文件)