hadoop fs -text和hadoop fs -cat和hadoop fs -get之间有什么区别?

3
我相信以下所有命令都可用于将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'命令来处理大文件。(我通常使用这两个命令来复制MapReduce作业的输出文件,而在我的案例中,这些文件通常较小。)


-文本只能与zip和TextRecordInputStream格式一起使用。 - davek
3个回答

10

-cat 和 -text 之间的主要区别在于 text 可以检测文件的编码并尽可能将其解码为纯文本,而 cat 则不能。

例如,看看这个经过 lzo 压缩的文件的例子。

使用 text 命令:

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���2IJ,�2�U\&:99�\�:��E9)\֙��"

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


1
hadoop fs -get 
hadoop fs -copyToLocal 

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

这条命令会在你的标准输出(控制台或命令提示符)中显示 HDFS 文件的内容。
hadoop fs  -text 

这将显示hdfs文件的内容(但只有zip和TextRecordInputStream格式,如SequenceFileFormat,才能使用文本)。

它对他人也适用,但您必须提供与您的加密机制相关的库。 - MozenRath

0

-text

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

-cat

用法:hadoop fs -cat URI [URI …] 将源路径复制到标准输出。

-get

用法:hadoop fs -get [-ignorecrc] [-crc] 将文件复制到本地文件系统。如果文件未通过CRC检查,则可以使用-ignorecrc选项进行复制。可以使用-crc选项复制文件和CRC。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接