使用Java代码运行简单Hadoop命令



我想使用hadoop命令列出文件。"hadoop fs -ls filepath"。我想写一个Java代码来实现这一点。我可以写一小段java代码,把它做成一个罐子,然后把它提供给Map reduce作业(Amazon EMR)来实现这一点吗?

你能告诉我代码和步骤吗?

可以使用下面的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);
}

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

选项2

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

My Github Repository

简单的命令,如:

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

您还可以在其他文件夹中查找java中的map-reduce代码。

相关内容

  • 没有找到相关文章

最新更新