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

Sun*_*nil 2 hadoop file 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/
Run Code Online (Sandbox Code Playgroud)

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

rog*_*one 9

-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
Run Code Online (Sandbox Code Playgroud)

用猫:

 hadoop fs -cat hdfs://namenode:8020/user/hive/warehouse/database/000000_0.lzo_deflate 
    ?iW3?I???2?IJ,?2?U\&:?99?\?:??E9)\???"
Run Code Online (Sandbox Code Playgroud)

dfs -get命令用于将文件复制到本地文件系统.