hadoop - 如何在HDFS上的文件夹下的所有叶节点中合并小文件

标签 hadoop hdfs

我在叶节点中有许多小文件(文本文件和 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/

相关文章:

hadoop - 具有各种文档(pdf、ppt、MS word、纯文本等)的 hadoop 可搜索存档的最佳实践

python - 如何将外部 python 库添加到 HDFS?

hadoop - SVD 实现 map reduce

hadoop - Hiveserver2:无法创建/更改scratchdir权限到777:无法创建FileClient

java - 在没有 Oozie 的情况下定期运行 MapReduce 作业?

hadoop - 压缩 Hadoop Archive 工具的输出

hdfs - 使用 EMR 启用本地磁盘加密

hadoop - HDFS 中的默认 block 大小不是最小文件大小吗?

java - 在 DTconsole 中窗口 ID 达到 59 后重置为 0

Hadoop复制来自本地: '.' : No such file or directory