我想合併2個bzip2的文件。我嘗試追加另一個:cat file1.bzip2 file2.bzip2 > out.bzip2
似乎工作(此文件解壓縮正確),但我想使用此文件作爲Hadoop輸入文件,並且我得到關於損壞的塊的錯誤。如何合併2個bzip2的文件?
合併2 bzip2'ed文件而不解壓縮它們的最佳方式是什麼?
我想合併2個bzip2的文件。我嘗試追加另一個:cat file1.bzip2 file2.bzip2 > out.bzip2
似乎工作(此文件解壓縮正確),但我想使用此文件作爲Hadoop輸入文件,並且我得到關於損壞的塊的錯誤。如何合併2個bzip2的文件?
合併2 bzip2'ed文件而不解壓縮它們的最佳方式是什麼?
處理級聯bzip固定在trunk上,或者應該是:https://issues.apache.org/jira/browse/HADOOP-4012。有一些例子可以工作:https://issues.apache.org/jira/browse/MAPREDUCE-477?focusedCommentId=12871993&page=com.atlassian.jira.plugin.system.issuetabpanels%3Acomment-tabpanel#action_12871993確保你運行的是最新版本的Hadoop,你應該沒問題。
你可以壓縮(好,存儲)他們到一個新的bz2?這意味着你必須做3次解壓才能獲得2個存檔的內容,但可能適用於你的場景。
這是非常好的想法,如果bzip2很聰明,只需要1次解壓就好多了。 – wlk 2010-07-02 21:19:02
你不會有必要合併文件使用它們作爲Hadoop的輸入:
file_name*
- 模式;file_name_1,file_name_2
- 輸入列表。而Hadoop會處理它。
否則,您可以使用Hadoop的流式傳輸來合併它們(通過解壓縮)。
您可以通過圖案像產生的文件列表:
FILES_LIST="'ls -m template*.bz2'"
INPUT_FILE="'echo $FILES_LIST | tr -d ' ' '"
內'
行情應有所不同。您可以通過CLI將$INPUT_FILE
作爲變量傳遞給您的腳本。
也可以將CombineFileInputFormat類作爲InputFormat。
我試過了,但是當你有幾千個壓縮文件每個1MB的壓縮文件,並且你不想加載他們到HDFS,但有一個大文件,您可以加載。 – wlk 2013-01-03 08:49:25
'lbzcat部分* | lbzcat -z> output_file' – 2013-01-03 11:53:17
我最近的評論是合併文件,但是hadoop在之後無法讀取它們。 – 2013-01-03 19:23:10
Bzipped文件被正確分割,但我仍然無法弄清楚如何在連接文件上運行map任務。 (但解壓縮後,然後'cat',然後壓縮這個大輸入文件工作) – wlk 2010-07-08 12:49:25