从多个 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/")
我有一个作业需要以 parquet/avro 格式保存来自所有工作节点的结果。我可以为每个单独的分区创建一个单独的镶木地板文件,并将所有生成的文件作为一个 table 读取吗?还是有更好的方法来解决这个问题? 输入分为96个分区,结果需要保存在HDFS上。当我试图将它保存为文件时,它创建了超过一百万个小文件。
您可以在调用 write
之前对所需数量的分区执行 repartition
(或者 coalesce
,如果您总是想要更少的分区)。然后,您的数据将被写入相同数量的文件中。当你想读入数据时,你只需指向包含文件的文件夹而不是特定的文件。像这样:
sqlContext.read.parquet("s3://my-bucket/path/to/files/")