【问题标题】:Retrieve the job result from HDFS从 HDFS 检索作业结果
【发布时间】:2023-03-14 18:34:01
【问题描述】:

直接从 HDFS 读取文件而不将其复制到本地文件系统。我将结果复制到本地文件系统。

hduser@ubuntu:/usr/local/hadoop$ mkdir /tmp/gutenberg-output bin/hadoop dfs -getmerge /user/hduser/gutenberg-output /tmp/gutenberg-output 不推荐使用:不推荐使用此脚本执行 hdfs 命令。 而是使用 hdfs 命令。

20/11/17 21:58:02 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... 在适用的情况下使用内置 java 类 linux的答案是 getmerge: `/tmp/gutenberg-output': 是一个目录 请问这个错误怎么解决?

【问题讨论】:

    标签: java linux hadoop


    【解决方案1】:

    您似乎试图输出这个特定的 HDFS 目录本身,而不是其中的内容。

    不过,HDFS 的好处是它确实遵循一些基于 Unix 的命令行约定,因此您可以真正读取此目录下文件的内容(您应该拥有作业的输出) ) 使用cat 命令,如下所示:

    hadoop fs -cat output_directory/part-r-00000
    

    output_directory 是存储所需输出的目录的名称,part-r-00000 是文件名(或名为 part-r-00000part-r-00001 等的一组文件中的第一个文件名。取决于您可能定义的作业减速器的数量)以及作业的结果。

    如果上面的命令抛出一个错误,表明没有具有该名称的文件,那么您的工作在设置输出 key-value 对之前偶然发现了一个问题,或者您的 Hadoop 版本有点旧并且名称为输出文件类似于 part-00000, part-00001 并且继续。

    作为一个示例,下面屏幕截图中的以下输出来自一个已执行的作业,其输出存储在 HDFS 的 wc_out 目录下:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多