在不通过网络的情况下合并HDFS文件



我可以这样做:

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

但它将使HDFS文件通过网络进行流式传输。有没有一种方法可以告诉HDFS合并集群本身上的一些文件?

我遇到了和你类似的问题。这篇文章提供了许多HDFS文件合并选项,但它们都有一些细节。这个名单上没有人符合我的要求。希望这能对你有所帮助。

  • HDFSconcat(实际上是FileSystem.concat())。不是那么老的API。要求原始文件的最后一个块已满
  • MapReduce作业:我可能会采用一些基于此技术的解决方案,但设置起来很慢
  • 复制合并-据我所见,这将是再次复制。但我还没有核实细节
  • 文件压缩-再次,看起来像MapReduce

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

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

相关内容

  • 没有找到相关文章

最新更新