hadoop fs -text vs hadoop fs -cat vs hadoop fs -get

时间:2014-09-18 18:35:39

标签: file hadoop hdfs

我相信以下所有命令都可用于将hdfs文件复制到本地文件系统。有什么区别/情境利弊。 (Hadoop新手在这里)。

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/

我的拇指规则是避免对大文件使用'text'和'cat'。 (我用它来复制我的MR作业的输出,在我的用例中通常较小)。

3 个答案:

答案 0 :(得分:8)

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

答案 1 :(得分:1)

hadoop fs -get 
hadoop fs -copyToLocal 

以上HDFS命令可用于将HDFS文件复制到本地系统。

hadoop fs -cat 

此命令将在标准输出(控制台或命令提示符)上显示HDFS文件的内容。

hadoop fs  -text 

这将显示hdfs文件的内容(但文本仅适用于zip和TextRecordInputStream格式,如SequenceFieFormat)。

答案 2 :(得分:0)

-text

  

用法:hadoop fs -text获取源文件并输出文件   以文本格式。允许的格式为zip和TextRecordInputStream。

-cat

  

用法:hadoop fs -cat URI [URI ...]将源路径复制到stdout。

-get

  

用法:hadoop fs -get [-ignorecrc] [-crc]复制文件   到本地文件系统。可以复制未通过CRC校验的文件   使用-ignorecrc选项。可以使用以下命令复制文件和CRC   -crc选项。