38

可能是一个菜鸟问题,但是除了复制到本地并通过 unix 读取之外,还有其他方法可以读取 hdfs 中的文件内容吗?

所以现在我正在做的是:

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

  nano local/path

我想知道我是否可以直接将文件打开到 hdfs 而不是在本地复制它然后打开它。

4

6 回答 6

66

我相信hadoop fs -cat <file>应该做这项工作。

于 2013-02-17T19:54:06.970 回答
17

如果文件很大(大多数时候都是这种情况),通过执​​行“cat”,您不想通过抛出文件的全部内容来炸毁终端。相反,使用管道并只获取文件的几行。

要获取文件的前 10 行,hadoop fs -cat 'file path' | 头-10

要获取文件的最后 5 行,hadoop fs -cat 'file path' | 尾-5

于 2016-04-20T06:33:59.473 回答
6

如果您使用的是 hadoop 2.x ,则可以使用

hdfs dfs -cat <file>
于 2016-12-30T02:09:38.163 回答
4
hadoop dfs -cat <filename>  or    hadoop dfs -cat <outputDirectory>/*
于 2013-02-18T09:52:33.703 回答
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 找到 1 项 -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

于 2019-05-21T21:02:38.080 回答
1

我通常使用

$ hdfs dfs -cat <filename> | less

这也有助于我在查看内容时搜索单词以找到我感兴趣的内容。

对于上下文无关的目的,例如了解文件中是否存在特定单词或计算单词出现次数,我使用。

$ hdfs dfs -cat <filename> | grep <search_word>

注意:grep还有-C上下文选项,匹配后/前的行-A和行。-B

于 2020-09-21T10:56:39.110 回答