从hdfs获取前两个文件

krcsximq  于 2021-05-27  发布在  Hadoop
关注(0)|答案(1)|浏览(365)

有没有一种方法可以使用命令行从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
byqmnocz

byqmnocz1#

你不能管一根管子 -get 到一个 -ls 你需要先 -ls | head -2 ,那么 awk 并剪下列出的文件名,然后分别 -get 那两个。
像这样的东西应该只有名字

hdfs dfs -ls -R /user/Lab01/input | head -2 | awk '{print $8}'

另外-如何在hdfs中只列出文件名
然后再加上“ | xargs hdfs dfs -get “下载文件

相关问题