是否可以使用命令行从HDFS中获取前两个文件?我的hadoop版本是2.7.3
我在HDFS中有一个包含多个文件的文件夹,另一个应用程序将其放置在该文件夹中: /user/Lab01/inpu/ingestionFile1.json /user/Lab01/inpu/ingestionFile2.json /user/Lab01/inpu/ingestionFile3.json /user/Lab01/inpu/ingestionFile4.json
我只需要根据时间处理前两个文件,因此如果使用以下方式列出内容:
$ hdfs dfs -ls -R /user/Lab01/input
-rw------- 3 huser dev 668 2019-02-13 11:34 /user/Lab01/inpu/ingestionFile1.json
-rw------- 3 huser dev 668 2019-02-13 11:36 /user/Lab01/inpu/ingestionFile2.json
-rw------- 3 huser dev 668 2019-02-13 11:38 /user/Lab01/inpu/ingestionFile3.json
-rw------- 3 huser dev 668 2019-02-13 11:41 /user/Lab01/inpu/ingestionFile4.json
为了从目录中获取前两个文件,我简单地使用head -2 pip命令以获取:
$ hdfs dfs -ls -R /user/Lab01/input | head -2
-rw------- 3 huser dev 668 2019-02-13 11:34 /user/Lab01/inpu/ingestionFile1.json
-rw------- 3 huser dev 668 2019-02-13 11:36 /user/Lab01/inpu/ingestionFile2.json
从hdfs获取文件的普通命令是使用-get:
hdfs dfs -get /user/Lab01/input/fileName
所以这就是为什么我现在试图合并这两个命令的原因:
$ hdfs dfs -get /user/Lab01/input | hdfs dfs -ls -R /user/Lab01/input | head -2
但是我没有得到期望的结果,我只是得到一条消息,给我最后一条命令的输出(hdfs dfs -ls -R -user / Lab01 / input | head -2):
-rw------- 3 huser dev 668 2019-02-13 11:34 /user/Lab01/inpu/ingestionFile1.json
-rw------- 3 huser dev 668 2019-02-13 11:36 /user/Lab01/inpu/ingestionFile2.json
答案 0 :(得分:2)
您无法将-get
传送到-ls
您需要先 -ls | head -2
,然后awk
并剪切列出的文件名,然后分别-get
这两个文件名。
类似的东西应该只得到名字
hdfs dfs -ls -R /user/Lab01/input | head -2 | awk '{print $8}'
也-How to list only the file names in HDFS
然后仅添加“ | xargs hdfs dfs -get
”以下载文件