Hadoop 无需通过网络即可合并HDFS文件

Hadoop 无需通过网络即可合并HDFS文件,hadoop,mapreduce,cluster-computing,hdfs,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在集群上合并几个文件?我遇到了与您类似的问题。 这里有一些问题,但它们都有一些细节。这份名单上没有一个人符合我的要求。希望这能对你有所帮助 HDFS concat(实际上是FileSystem.con

我可以这样做:

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

但它会使HDFS文件通过网络传输。有没有办法告诉HDFS在集群上合并几个文件?

我遇到了与您类似的问题。 这里有一些问题,但它们都有一些细节。这份名单上没有一个人符合我的要求。希望这能对你有所帮助

  • HDFS concat(实际上是FileSystem.concat()。不太旧的API。要求原始文件的最后一个块已满
  • MapReduce jobs:可能我会采用基于此技术的解决方案,但安装速度很慢
  • copyMerge-据我所知,这将再次复制。但我还没有检查细节
  • 文件压缩-同样,看起来像MapReduce
所以,主要的结果是,如果MapReduce的设置速度适合您,就没有问题了。如果您有实时需求,事情就会变得复杂

我的一个“疯狂”想法是使用HBase协处理器机制(端点)和文件来阻止本地信息,因为我在同一集群上有HBase。如果“疯狂”这个词不能阻止你,看看这个: