有没有一种方法可以使用命令行从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
1条答案
按热度按时间byqmnocz1#
你不能管一根管子
-get
到一个-ls
你需要先-ls | head -2
,那么awk
并剪下列出的文件名,然后分别-get
那两个。像这样的东西应该只有名字
另外-如何在hdfs中只列出文件名
然后再加上“
| xargs hdfs dfs -get
“下载文件