使用Java代码运行Simple Hadoop Command

时间:2014-08-04 15:22:41

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

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

2 个答案:

答案 0 :(得分: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);
}

在地图中使用此缩减触发器代码(主要或运行方法)以获取列表并将其传递给地图缩小类

选项2

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

答案 1 :(得分:0)

Here is My Github Repository

简单命令如:

制作文件夹,
把文件放到hdfs, 阅读,
上市和 写入数据存在于JAVA API文件夹中
您可以浏览其他文件夹以获取java中的map-reduce代码。