如何將HDFS上的一個目錄中的所有文件(我知道都是壓縮的)合併到單個壓縮文件中,沒有通過本地機器複製數據?例如,但不一定,使用豬?例如,我有一個文件夾/ data/input,它包含文件part-m-00000.gz和part-m-00001.gz。現在我想合併成一個文件/data/output/foo.gz在HDFS上合併壓縮文件
4
A
回答
0
我知道有一個選項可以使用「hdfs dfs -getMerge」命令合併到本地文件系統。也許你可以使用它來合併到本地文件系統,然後使用'hdfs dfs -copyFromLocal'命令將其複製回hdfs。
1
如果將Parallel設置爲1,那麼您將擁有單個輸出文件 This可以通過兩種方式來完成:
-
在你的豬
- 添加
set default_parallel 20;
但要注意,這種影響一切都在你的豬 - 更改並行對於單個操作 - 像
DISTINCT ID PARALLEL 1;
可以閱讀更多關於Parallel Features
4
我會建議看FileCrush(https://github.com/edwardcapriolo/filecrush),這是一個使用MapReduce在HDFS上合併文件的工具。它完全符合您所描述的內容,並提供了若干選項來處理壓縮和控制輸出文件的數量。
Crush --max-file-blocks XXX /data/input /data/output
max-file-blocks
表示每個輸出文件的最大dfs塊數。例如,根據文檔:
使用默認值8,80個小文件,每個都是DFS 塊將被分組爲以自8 * 1/10單個輸出文件的1/10 = 8 dfs塊。如果有81個小文件,每個文件都是塊的1/10,則會創建兩個輸出文件。一個輸出文件包含41個文件的 組合內容,第二個將包含另一個40的組合 內容。許多小文件的目錄將被 轉換爲更少數量的較大文件,其中每個輸出文件的大小相當於 尺寸。
相關問題
- 1. 內部HDFS文件壓縮
- 2. Hadoop:在HDFS中壓縮文件?
- 3. 上傳壓縮文件,解壓縮並讀取文件
- 4. 壓縮文件爲'hadoop hdfs -get'
- 5. 從火花的hdfs解壓縮文件
- 6. 如何用Snappy壓縮文件到HDFS
- 7. LZO-在HDFS上壓縮和索引文件就地?
- 8. 合併PDF和壓縮文件.net
- 9. 在Windows上解壓壓縮文件8
- 10. 塊級別的HDFS壓縮
- 11. 解壓縮文件並讀取解壓縮文件
- 12. 壓縮文件併發送它而不保存壓縮文件
- 13. 使用MapReduce API使用Gzip壓縮在HDFS中複製文件
- 14. 如何檢查文件是否在HDFS中正確壓縮?
- 15. 在yii中壓縮/解壓縮文件
- 16. S3上的壓縮文件
- 17. HTML壓縮文件上傳?
- 18. BuildFire:上傳壓縮文件
- 19. Android解壓縮在Mac上壓縮的文件
- 20. 如何使用gzip壓縮存儲在hdfs上的文件的原始內容?
- 21. 合併多個文件遞歸HDFS
- 22. 壓縮文件
- 23. 將兩個文本文件合併在一起,並將它們壓縮
- 24. 使用PHP壓縮並使用Java上傳的PHP解壓縮文件Android
- 25. 在JavaScript文件上強制GZIP壓縮
- 26. Python:將zip文件解壓縮並解壓縮.zip
- 27. 如何(高度)壓縮文件並解壓縮iOS
- 28. 錯誤而來自本地的Linux文件解壓縮到HDFS
- 29. Javascript和CSS文件合併在Maven構建無壓縮,縮小等
- 30. bash:在壓縮其他文件時發送壓縮文件
但我想避免必須將數據傳送回本地文件系統。 – matthiash