我有多个小输入文件。对于使用多个输入文件运行map reduce作业,这将是命令:
hadoop jar <jarname> <packagename.classname> <input_dir> <output>
但如果以上&lt; output&gt;只是一个文本文件,应该是HAR
文件,命令是什么,以便MapReduce作业的所有输出都是HAR存档?
答案 0 :(得分: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