我可以这样做:
hadoop fs -text /path/to/result/of/many/reudcers/part* | hadoop fs -put - /path/to/concatenated/file/target.csv
但它会使hdfs文件通过网络传输。有没有办法告诉hdfs在集群上合并几个文件?
t98cgbkg1#
我有和你一样的问题。这是一篇关于hdfs文件合并选项的文章,但它们都有一些细节。名单上没有人符合我的要求。希望这能帮到你。hdfs concat(实际上是filesystem.concat())。不太旧的api。要求原始文件的最后一个块已满。mapreduce jobs:可能我会采取一些基于这种技术的解决方案,但它的安装速度很慢。复制合并-据我所知,这将再次复制。但我还没有检查细节。文件压缩-再次,看起来像mapreduce。所以主要的结果是如果mapreduce的设置速度适合你,没问题。如果你有实时需求,事情会变得越来越复杂。我的一个“疯狂”想法是使用hbase协处理器机制(端点)和文件块位置信息,因为我在同一个集群上有hbase。如果“疯狂”这个词不能阻止你,看看这个:http://blogs.apache.org/hbase/entry/coprocessor_introduction
1条答案
按热度按时间t98cgbkg1#
我有和你一样的问题。这是一篇关于hdfs文件合并选项的文章,但它们都有一些细节。名单上没有人符合我的要求。希望这能帮到你。
hdfs concat(实际上是filesystem.concat())。不太旧的api。要求原始文件的最后一个块已满。
mapreduce jobs:可能我会采取一些基于这种技术的解决方案,但它的安装速度很慢。
复制合并-据我所知,这将再次复制。但我还没有检查细节。
文件压缩-再次,看起来像mapreduce。
所以主要的结果是如果mapreduce的设置速度适合你,没问题。如果你有实时需求,事情会变得越来越复杂。
我的一个“疯狂”想法是使用hbase协处理器机制(端点)和文件块位置信息,因为我在同一个集群上有hbase。如果“疯狂”这个词不能阻止你,看看这个:http://blogs.apache.org/hbase/entry/coprocessor_introduction