2015-12-16 153 views
1

我有多個小輸入文件。對於運行圖減少工作有多個輸入文件,這將是該命令:帶HAR文件輸出的MapReduce作業

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

但如果萬一上述<輸出>只是一個文本文件,應該是一個HAR文件會是怎樣的命令這樣MapReduce作業的所有輸出都是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 

您可以選擇刪除原始內容(/wordcountout目錄在我的例子),如果僅在哈日格式具有數據足以滿足您的需求。

有關hadoop archive命令的更多信息,請訪問:

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

+1

嗨@ChrisNauroth感謝您的答覆,所以沒有指定MapReduce工作爲'HAR'的輸出方式? –

+0

@JamesCarlNecio,不,沒有辦法將輸出指定爲直接指向har。部分難點在於多個併發reduce任務不可能寫入同一個har文件。標準的解決方案是運行'hadoop archive'作爲後處理步驟。 –

+0

好的,謝謝,將把你的答案作爲我的問題的解決方案。 –