0

我可以这样做:

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

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

4

1 回答 1

1

我有和你类似的问题。这是包含许多 HDFS 文件合并选项的文章,但它们都有一些细节。此列表中没有人符合我的要求。希望这可以帮助你。

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

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

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

于 2013-09-18T17:34:46.000 回答