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