可能是一个菜鸟问题,但有没有办法在hdfs中读取文件的内容,除了复制到本地和通过unix阅读?
现在我正在做的是:
bin/hadoop dfs -copyToLocal hdfs/path local/path
nano local/path
我想知道我是否可以直接打开文件到hdfs而不是在本地复制然后打开它。
由于
答案 0 :(得分:47)
我相信hadoop fs -cat <file>
应该完成这项工作。
答案 1 :(得分:12)
如果文件大小很大(大多数时候都是这种情况),可以通过“cat&#39;你不想通过抛出文件的全部内容来炸毁你的终端。相反,使用管道并只获得文件的几行。
要获取文件的前10行, hadoop fs -cat&#39;文件路径&#39; |头-10
要获取文件的最后5行, hadooop fs -cat&#39;文件路径&#39; |尾-5
答案 2 :(得分:4)
hadoop dfs -cat <filename> or hadoop dfs -cat <outputDirectory>/*
答案 3 :(得分:4)
如果您使用的是hadoop 2.x,则可以使用
hdfs dfs -cat <file>
答案 4 :(得分:1)
我通常使用
.inc
这也有助于我在查看内容时搜索单词以找到自己感兴趣的内容。
出于较少的上下文无关目的,例如知道文件中是否存在特定单词或计算单词出现次数,我使用
$ hdfs dfs -cat <filename> | less
注意:$ hdfs dfs -cat <filename> | grep <search_word>
也有grep
的上下文选项,-C
和-A
的匹配项是在比赛之后/之前。
答案 5 :(得分:0)
/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
hdfs dfs -cat /eventLogging/application_1557435401803_0106
列出我们刚刚创建的目录的内容,现在应该从我们刚才的运行中获得一个新的日志文件
[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
现在可以查看文件运行{{1}}
资源: https://hadoop.apache.org/docs/r2.7.3/hadoop-project-dist/hadoop-hdfs/HDFSCommands.html