【问题标题】:How to create and read directories in Hadoop - Mapreduce Job working directory如何在 Hadoop 中创建和读取目录 - Mapreduce Job 工作目录
【发布时间】:2015-07-18 07:14:52
【问题描述】:

我想在 Hadoop 中的 MapReduce 作业的工作目录中创建一个目录。

例如通过使用: 文件 setupFolder = new File(setupFolderName); setupFolder.mkdirs();

在我的映射器类中写入一些中间文件。这是正确的方法吗?

另外,在完成工作后,如果我愿意,我将如何再次访问该目录?

请指教。

【问题讨论】:

    标签: hadoop mapreduce


    【解决方案1】:

    如果您使用的是 java,您可以覆盖 setup 方法并在那里打开文件处理程序(并在 cleanup 中关闭它)。此句柄将可供所有映射器使用。

    我假设您不是在此处编写所有地图输出,而是在此处编写一些调试/统计信息。使用此处理程序,您可以读取和写入,如本示例所示 (http://wiki.apache.org/hadoop/HadoopDfsReadWriteExample)

    如果您想阅读整个目录,请查看此示例 https://sites.google.com/site/hadoopandhive/home/how-to-read-all-files-in-a-directory-in-hdfs-using-hadoop-filesystem-api

    请记住,您将无法依赖写入文件的数据顺序。

    【讨论】:

      【解决方案2】:

      您可以在 reducer 类中覆盖 setupReduce(),使用 mkdirs() 创建文件夹并使用 create() 为输出流创建文件。

      @Override
          protected void setupReduce(Context context) throws IOException {
              Configuration conf = context.getConfiguration();
              FileSystem fs = FileSystem.get(conf);
              fs.mkdirs(new Path("your_path_here"));
          }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-10-20
        • 1970-01-01
        • 1970-01-01
        • 2017-07-01
        相关资源
        最近更新 更多