查看HDFS Hadoop文件的内容

42

可能是一个新手问题,但除了将文件复制到本地并通过Unix读取之外,是否有一种方法可以读取HDFS中文件的内容?

所以现在我正在做的是:

  bin/hadoop dfs -copyToLocal hdfs/path local/path

  nano local/path

我想知道是否可以直接打开HDFS文件,而不是先将其复制到本地再打开。

7个回答

72

我认为hadoop fs -cat <file>可以完成这个任务。


18
如果文件尺寸很大(这种情况大多数时候都是这样的),使用“cat”命令会将整个文件内容全部输出到终端,可能会导致终端崩溃。相反,可以使用管道命令只获取文件的前几行。
获取文件的前10行,使用命令: hadoop fs -cat '文件路径' | head -10 获取文件的后5行,使用命令: hadoop fs -cat '文件路径' | tail -5

6
如果您正在使用Hadoop 2.x,您可以使用以下方法:
hdfs dfs -cat <file>

4
hadoop dfs -cat <filename>  or    hadoop dfs -cat <outputDirectory>/*

1
  1. SSH登录到您的EMR集群 ssh hadoop@emrClusterIpAddress -i yourPrivateKey.ppk
  2. 运行以下命令 /usr/lib/spark/bin/spark-shell --conf spark.eventLog.enabled=true --conf spark.eventLog.dir=hdfs://yourEmrClusterIpAddress:8020/eventLogging --class org.apache.spark.examples.SparkPi --master yarn --jars /usr/lib/spark/examples/jars/spark-examples_2.11-2.4.0.jar
  3. 列出我们刚创建的目录的内容,现在应该有一个新的日志文件记录了我们刚才运行的内容

    [hadoop@ip-1-2-3-4 bin]$ hdfs dfs -ls /eventLogging Found 1 items -rwxrwx--- 1 hadoop hadoop 53409 2019-05-21 20:56 /eventLogging/application_1557435401803_0106

  4. 现在可以查看该文件,运行命令 hdfs dfs -cat /eventLogging/application_1557435401803_0106

资源https://hadoop.apache.org/docs/r2.7.3/hadoop-project-dist/hadoop-hdfs/HDFSCommands.html


1

我通常使用

$ hdfs dfs -cat <filename> | less

这也帮助我在查看内容时搜索单词以找到我感兴趣的内容。
对于一些与上下文无关的目的,比如知道文件中是否存在特定单词或计算单词出现次数,我使用。
$ hdfs dfs -cat <filename> | grep <search_word>

注意:`grep`也有用于上下文的`-C`选项,以及用于匹配行之后/之前的行的`-A`和`-B`选项。

0

我试图弄清楚上述命令,但对我来说无法读取文件。 但是这个可以,

cat <filename>

例如,
cat data.txt

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