从多个 spark worker 保存为 parquet 格式

Saving in parquet format from multiple spark workers

我有一个作业需要以 parquet/avro 格式保存来自所有工作节点的结果。我可以为每个单独的分区创建一个单独的镶木地板文件,并将所有生成的文件作为一个 table 读取吗?还是有更好的方法来解决这个问题? 输入分为96个分区,结果需要保存在HDFS上。当我试图将它保存为文件时,它创建了超过一百万个小文件。

您可以在调用 write 之前对所需数量的分区执行 repartition(或者 coalesce,如果您总是想要更少的分区)。然后,您的数据将被写入相同数量的文件中。当你想读入数据时,你只需指向包含文件的文件夹而不是特定的文件。像这样:

sqlContext.read.parquet("s3://my-bucket/path/to/files/")