【问题标题】:Get the two first files from HDFS从 HDFS 获取前两个文件
【发布时间】:2019-07-08 22:45:32
【问题描述】:

有没有办法使用命令行从 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 命令来获取:

$ 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

【问题讨论】:

  • 知道了,我正在编辑问题

标签: bash hadoop command-line hdfs


【解决方案1】:

您不能通过管道将-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”即可下载文件

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-09
    • 1970-01-01
    • 1970-01-01
    • 2021-06-18
    • 2015-05-11
    相关资源
    最近更新 更多