Apache spark 在Spark中聚合分散的文件
我的工作是每天按特定字段在S3分区中摄取数据,例如:Apache spark 在Spark中聚合分散的文件,apache-spark,amazon-s3,partitioning,Apache Spark,Amazon S3,Partitioning,我的工作是每天按特定字段在S3分区中摄取数据,例如: ... result_df.write.partitionBy("my_field").parquet("s3://my/location/") 这个摄取过程每天都会写入已经存在的分区,添加包含一条或几条记录的文件。我想强调的是,这种情况每天都会发生:随着时间的推移,这将生成许多大家都不喜欢的小文件。您可能会告诉我,这不是分区的最佳字段,但这是业务所需的字段 所以我想运行另一个作业,检查包含太多文件的分区,并每天合并它们。但不幸的是,我想不
...
result_df.write.partitionBy("my_field").parquet("s3://my/location/")
这个摄取过程每天都会写入已经存在的分区,添加包含一条或几条记录的文件。我想强调的是,这种情况每天都会发生:随着时间的推移,这将生成许多大家都不喜欢的小文件。您可能会告诉我,这不是分区的最佳字段,但这是业务所需的字段
所以我想运行另一个作业,检查包含太多文件的分区,并每天合并它们。但不幸的是,我想不出一种有效的方法将这些文件与Spark合并。我想到的唯一解决办法是
关于这个用例有什么最佳实践吗?或者对建议的流程进行任何改进?例如,关于在SO中合并拼花地板文件的问题有很多。不幸的是,没有比你自己的想法更好的解决办法了。@mazaneicha感谢你的编辑和回复。我希望能有更聪明的东西:(但是这个解决方案,由于涉及到计算成本,不鼓励我使用这个字段作为分区列。但是我不认为我是唯一一个遇到类似用例的人,我想这可能是一个常见问题;人们真的在遇到这样的问题时应用这个解决方案?或者只是避免使用这个不舒服的分区字段?CompaAction是Hadoop生活的一部分,每个人都这么做。这种情况更多地与“可附加性”有关对于拼花格式和Hadoop文件系统,通常比您选择的分区字段更重要。如果您的案例导致了非常严重的小文件问题,那么也许是时候考虑其他存储机制了,例如HBase或Kudu。例如,在将拼花文件合并到SO中的问题很多。不幸的是,没有更好的解决方案比你自己的想法更聪明。@mazaneicha感谢你的编辑和回复。我希望能有更聪明的想法:(但是这个解决方案,由于涉及到计算成本,不鼓励我使用这个字段作为分区列。但是我不认为我是唯一一个遇到类似用例的人,我想这可能是一个常见问题;人们真的在遇到这样的问题时应用这个解决方案?或者只是避免使用这个不舒服的分区字段?Compa分区是Hadoop生活的一部分,每个人都这样做。这种情况更多地与拼花格式和Hadoop文件系统的“可附加性”有关,而不是您选择的分区字段。如果您的案例导致了非常严重的小文件问题,也许是时候考虑其他存储机制了,HBase或Kudu。