【问题标题】:MapReduce job with HAR file output带有 HAR 文件输出的 MapReduce 作业
【发布时间】:2016-03-22 04:50:28
【问题描述】:

我有多个小输入文件。对于运行具有多个输入文件的 map reduce 作业,这将是命令:

hadoop jar <jarname> <packagename.classname> <input_dir> <output>

但是如果上面的 只是一个文本文件并且应该是一个HAR 文件,那么 MapReduce 作业的所有输出都是 HAR 存档的命令是什么?

【问题讨论】:

    标签: java mapreduce hdfs har


    【解决方案1】:

    您在示例中执行的 MapReduce 作业无法将其输出直接写入 har 文件。相反,您可以在 MapReduce 作业之后运行 hadoop archive 作为后处理步骤,以将 MapReduce 作业输出打包到 har 文件中。

    > hadoop jar */share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar wordcount /README.txt /wordcountout
    
    > hdfs dfs -ls /wordcountout
    Found 2 items
    -rw-r--r--   3 chris supergroup          0 2015-12-16 11:28 /wordcountout/_SUCCESS
    -rw-r--r--   3 chris supergroup       1306 2015-12-16 11:28 /wordcountout/part-r-00000
    
    > hadoop archive -archiveName wordcountout.har -p /wordcountout /archiveout
    
    > hdfs dfs -ls har:///archiveout/wordcountout.har
    Found 2 items
    -rw-r--r--   3 chris supergroup          0 2015-12-16 12:17 har:///archiveout/wordcountout.har/_SUCCESS
    -rw-r--r--   3 chris supergroup       1306 2015-12-16 12:17 har:///archiveout/wordcountout.har/part-r-00000
    

    如果仅 har 格式的数据足以满足您的需求,您可以选择删除原始内容(在我的示例中为 /wordcountout 目录)。

    有关hadoop archive 命令的更多信息可在此处获得:

    http://hadoop.apache.org/docs/r2.7.1/hadoop-archives/HadoopArchives.html

    【讨论】:

    • 您好 @ChrisNauroth 感谢您的回复,因此无法将 MapReduce 作业的输出指定为 HAR?
    • @JamesCarlNecio,不,没有办法将输出指定为直接到 har。部分困难在于多个并发的reduce任务不可能写入同一个har文件。标准解决方案是运行 hadoop archive 作为后处理步骤。
    • 好的,谢谢,将您的答案设置为我的问题的解决方案。
    猜你喜欢
    • 2016-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-16
    相关资源
    最近更新 更多