2014-09-18 132 views
0

我相信以下所有命令都可用於將hdfs文件複製到本地文件系統。什麼是差異/情況親/缺點。 (Hadoop新手在這裏)。hadoop fs -text vs hadoop fs -cat vs hadoop fs -get

hadoop fs -text /hdfs_dir/* >> /local_dir/localfile.txt 
hadoop fs -cat /hdfs_dir/* >> /local_dir/localfile.txt 
hadoop fs -get /hdfs_dir/* >> /local_dir/ 

我的拇指規則是爲了避免對大文件使用'文本'和'貓'。 (我用它來複制我的MR作業的輸出,這在我的用例中通常較小)。

+0

-text只能使用zip和TextRecordInputStream格式。 – davek 2014-09-18 18:43:04

回答

1
hadoop fs -get 
hadoop fs -copyToLocal 

上面的HDFS命令可用於將HDFS文件複製到本地系統。

hadoop fs -cat 

該命令將在標準輸出(控制檯或命令提示符)中顯示HDFS文件的內容。

hadoop fs -text 

這將顯示HDFS文件的內容(但內容僅拉鍊和TextRecordInputStream格式,如SequenceFieFormat工作)。

0

-text

用法:hadoop的FS -text取得一個源文件,並輸出該文件 以文本格式。允許的格式是zip和TextRecordInputStream。

-cat

用法:hadoop的FS URI -cat [URI ...]複製源路徑到stdout。

-get

用法:hadoop的FS -get [-ignorecrc] [-CRC] 的文件複製到本地文件系統。無法通過CRC校驗的文件可能會使用-ignorecrc選項複製 。可以使用 -crc選項複製文件和CRC。

4

-cat和-text的主要區別在於,文本檢測到文件的編碼並儘可能將其解碼爲純文本,而cat不執行此操作。

例如以這個lzo壓縮文件爲例。

使用文本:

hadoop fs -text hdfs://namenode:8020/user/hive/warehouse/database/000000_0.lzo_deflate 
1,foo 
2,bar 
3,baz 
4,hello 
5,world 

使用cat:

hadoop fs -cat hdfs://namenode:8020/user/hive/warehouse/database/000000_0.lzo_deflate 
    ίiW3�I���2�IJ,�2�U\&:�99�\�:��E9)\֙��" 

DFS -get命令用於將文件複製到本地文件系統。