【问题标题】:Running Simple Hadoop Command using Java code使用 Java 代码运行简单的 Hadoop 命令
【发布时间】:2014-08-04 15:22:40
【问题描述】:

我想使用 hadoop 命令列出文件。 “hadoop fs -ls 文件路径”。我想编写一个Java代码来实现这一点。我可以编写一小段 java 代码,制作一个 jar 并将其提供给 Map reduce 作业(Amazon EMR)来实现这一点吗?能否请您指出我可以使用的代码和步骤?

【问题讨论】:

    标签: hadoop mapreduce elastic-map-reduce amazon-emr


    【解决方案1】:

    您可以使用下面的 JAVA 代码列出 HDFS 中的文件

    import org.apache.hadoop.conf.Configuration;
    import org.apache.hadoop.fs.FileStatus;
    import org.apache.hadoop.fs.FileSystem;
    import org.apache.hadoop.fs.FileUtil;
    import org.apache.hadoop.fs.Path;
    
    ...
    
    Configuration configuration = new Configuration(); 
    
    FileSystem hdfs = FileSystem.get(new URI("hdfs://localhost:54310"), configuration);
    FileStatus[] fileStatus = hdfs.listStatus(new Path("hdfs://localhost:54310/user/path"));
    
    Path[] paths = FileUtil.stat2Paths(fileStatus);
    
    for (Path path : paths) {
      System.out.println(path);
    }
    

    在您的 map reduce 触发代码(main 或 run 方法)中使用它来获取列表并为您的 map reduce 类传递参数

    选项 2

    1. 使用 hadoop fs -ls 命令创建 shell 脚本以读取文件列表
    2. 将此脚本作为 EMR 引导脚本的一部分提供以获取文件列表
    3. 在同一脚本中,您可以编写代码以将路径保存在路径 /mnt/ 下的文本文件中
    4. 从您的 map reduce 代码中读取此路径,并为您的 mapper 和 reducer 提供 arg 列表

    【讨论】:

      【解决方案2】:

      Here is My Github Repository

      简单的命令如:

      制作文件夹,
      将文件放入 hdfs, 阅读,
      上市和
      写入数据存在于 JAVA API 文件夹中。

      并且您可以探索其他文件夹以获取 java 中的 map-reduce 代码。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-03-07
        • 2017-02-19
        • 1970-01-01
        • 2016-11-03
        相关资源
        最近更新 更多