【问题标题】:Is there an alternative for hadoop -getmerge?hadoop -getmerge 有替代方案吗?
【发布时间】:2018-03-03 21:19:13
【问题描述】:

我尝试使用 hadoop get merge 合并集群中的 80 GB 文件,

但由于 hadoop get merge 具有将文件从 hdfs 复制到本地文件系统的属性,我必须先复制到本地,然后再将 copyFromLocal 复制到 hdfs,

hadoop fs -getmerge hdfs:///path_in_hdfs/* ./local_path

hadoop fs -copyFromLocal ./local_path hdfs://Destination_hdfs_Path/

我的问题是本地的datanode小于80 GB,

我需要知道是否有替代 -getmerge 的方法,可以直接从 HDFS 到 HDFS 进行合并

我也试过 hadoop -cat 但它不起作用..

【问题讨论】:

    标签: hadoop merge hadoop-yarn hadoop2


    【解决方案1】:

    带有-cat 选项的HDFS 命令应该可以工作。将-cat 命令的结果通过管道传送到-put 命令。

    hadoop fs -cat hdfs://input_hdfs_path/* | hadoop fs -put - hdfs://output_hdfs_path/output_file.txt
    

    【讨论】:

      【解决方案2】:

      实际上并没有真正的替代方案。您可以通过 MapReduce 或 Spark 作业获得相同的结果(将输出的并行度设置为 1),但没有使用纯 hdfs 命令的解决方案。

      【讨论】:

      • mark91,你能帮我如何使用 mapreduce 代码实现这一点,
      • 您只需要运行 Hadoop 流式作业,并为输入和输出位置、输入和输出格式设置正确的设置,并使用 1 作为 reducer 的数量,分别使用 IdentityMapper 和 IdentityReducer 作为映射器和 reducer 类(这里你可以找到一些文档:hadoop.apache.org/docs/current/hadoop-streaming/…)
      【解决方案3】:

      流媒体可能会有所帮助。但是,合并后的文件将按排序顺序排列(第一个选项卡之前的文本将是键)。如果不希望排序,则不能选择流式传输。

      文件 1

      Tom     25
      Pete    30
      Kevin   26
      

      文件 2

      Neil    28
      Chris   31
      Joe     27
      

      合并文件

      Chris   31
      Joe     27
      Kevin   26
      Neil    28
      Pete    30
      Tom     25
      

      【讨论】:

        猜你喜欢
        • 2012-05-29
        • 2021-12-03
        • 2019-07-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-07-24
        • 2011-11-28
        相关资源
        最近更新 更多