Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache spark 在Spark中聚合分散的文件_Apache Spark_Amazon S3_Partitioning - Fatal编程技术网

Apache spark 在Spark中聚合分散的文件

Apache spark 在Spark中聚合分散的文件,apache-spark,amazon-s3,partitioning,Apache Spark,Amazon S3,Partitioning,我的工作是每天按特定字段在S3分区中摄取数据,例如: ... result_df.write.partitionBy("my_field").parquet("s3://my/location/") 这个摄取过程每天都会写入已经存在的分区,添加包含一条或几条记录的文件。我想强调的是,这种情况每天都会发生:随着时间的推移,这将生成许多大家都不喜欢的小文件。您可能会告诉我,这不是分区的最佳字段,但这是业务所需的字段 所以我想运行另一个作业,检查包含太多文件的分区,并每天合并它们。但不幸的是,我想不

我的工作是每天按特定字段在S3分区中摄取数据,例如:

...
result_df.write.partitionBy("my_field").parquet("s3://my/location/")
这个摄取过程每天都会写入已经存在的分区,添加包含一条或几条记录的文件。我想强调的是,这种情况每天都会发生:随着时间的推移,这将生成许多大家都不喜欢的小文件。您可能会告诉我,这不是分区的最佳字段,但这是业务所需的字段

所以我想运行另一个作业,检查包含太多文件的分区,并每天合并它们。但不幸的是,我想不出一种有效的方法将这些文件与Spark合并。我想到的唯一解决办法是

  • 读取包含太多小文件的分区
  • 重新分区并将结果写入支持文件夹
  • 删除源分区
  • 将步骤2中生成的数据移动到原始分区
  • 我真的不喜欢这么多次移动数据的想法,我发现它效率低下。理想的做法是将同一分区中的所有文件以较小的数目分组,但使用Spark对我来说似乎不可行


    关于这个用例有什么最佳实践吗?或者对建议的流程进行任何改进?

    例如,关于在SO中合并拼花地板文件的问题有很多。不幸的是,没有比你自己的想法更好的解决办法了。@mazaneicha感谢你的编辑和回复。我希望能有更聪明的东西:(但是这个解决方案,由于涉及到计算成本,不鼓励我使用这个字段作为分区列。但是我不认为我是唯一一个遇到类似用例的人,我想这可能是一个常见问题;人们真的在遇到这样的问题时应用这个解决方案?或者只是避免使用这个不舒服的分区字段?CompaAction是Hadoop生活的一部分,每个人都这么做。这种情况更多地与“可附加性”有关对于拼花格式和Hadoop文件系统,通常比您选择的分区字段更重要。如果您的案例导致了非常严重的小文件问题,那么也许是时候考虑其他存储机制了,例如HBase或Kudu。例如,在将拼花文件合并到SO中的问题很多。不幸的是,没有更好的解决方案比你自己的想法更聪明。@mazaneicha感谢你的编辑和回复。我希望能有更聪明的想法:(但是这个解决方案,由于涉及到计算成本,不鼓励我使用这个字段作为分区列。但是我不认为我是唯一一个遇到类似用例的人,我想这可能是一个常见问题;人们真的在遇到这样的问题时应用这个解决方案?或者只是避免使用这个不舒服的分区字段?Compa分区是Hadoop生活的一部分,每个人都这样做。这种情况更多地与拼花格式和Hadoop文件系统的“可附加性”有关,而不是您选择的分区字段。如果您的案例导致了非常严重的小文件问题,也许是时候考虑其他存储机制了,HBase或Kudu。