我在叶节点中有许多小文件(文本文件和 Parquet 文件)(例如/aaa/bbb/ccc/x/x1.txt、/aaa/bbb/ccc/x/x2.txt,...和/ aaa / bbb / ccc / t / dt = xxxx-xx-xx / part-00000,/ aaa / bbb / ccc / t / dt = xxxx-xx-xx / part-00001,...) aaa / bbb / ccc /),现在我需要将小文件(例如<10MB)合并到所有叶节点中的单个文件中。有什么好办法吗?谢谢!
最佳答案
首先,我建议合并所有小于128MB的文件或任何块大小的文件。如果您认为10M足够大,那就错了。
有几种方法可以做到这一点。如果您有Hive,Spark或Pig,则只需加载文件并将它们写入其他位置。
如果没有,则可以使用hadoop distcp
作业执行MapReduce作业,该作业将读取文件并将它们重写到同一集群中的其他文件夹中,通常以更大的大小写入。这甚至是Amazon EMR文档提供的一种模式。
如果这些文件持续到达,请使用Oozie工作流程随着时间的推移重复该过程
关于hadoop - 如何在HDFS上的文件夹下的所有叶节点中合并小文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49485310/