合并HDFS文件而无需通过网络

时间:2013-08-20 10:13:43

标签: hadoop mapreduce cluster-computing hdfs

我可以这样做:

hadoop fs -text /path/to/result/of/many/reudcers/part* | hadoop fs -put - /path/to/concatenated/file/target.csv

但它会使HDFS文件通过网络流式传输。有没有办法告诉HDFS合并群集本身的几个文件?

1 个答案:

答案 0 :(得分:1)

我有类似你的问题。 这是article with number of HDFS files merging options,但所有这些都有一些细节。此列表中没有人符合我的要求。希望这可以帮助你。

  • HDFS concat(实际上是FileSystem.concat())。不是那么老的API。需要原始文件才能使最后一个块满。
  • MapReduce工作:可能我会根据这项技术采取一些解决方案,但设置很慢。
  • copyMerge - 据我所见,这将再次复制。但我还没有检查细节。
  • 文件粉碎 - 再次,看起来像MapReduce。

所以主要的结果是如果MapReduce的设置速度适合你,没问题。如果你有实时要求,事情就会变得复杂。

我的一个“疯狂”想法是使用HBase协处理器机制(端点)和文件阻止本地信息,因为我在同一个集群上有Hbase。如果“疯狂”这个词并没有阻止你,请看看:http://blogs.apache.org/hbase/entry/coprocessor_introduction