我在叶子节点中有很多小文件(文本文件和镶木地板文件)(例如/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)合并到所有叶节点中的单个文件中。有什么好办法吗?谢谢!
答案 0 :(得分:0)
首先,我建议合并所有小于128MB的文件或任何块大小。如果您认为10M足够大,那么您就错了。
有几种方法可以做到这一点。如果你有Hive,Spark或Pig,只需加载文件并将它们写在其他地方。
如果没有,您可以使用hadoop distcp
作业执行MapReduce作业,该作业将读取文件并将其重写到同一群集中的不同文件夹中,通常以较大的大小写入。这甚至是Amazon EMR文档给出的模式。
如果这些文件不断到达,请使用Oozie工作流程重复该过程