2014-09-18 99 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命令用于将文件复制到本地文件系统。