你能告诉我代码和步骤吗?
我想使用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
- 创建shell脚本,使用hadoop fs -ls命令读取文件列表
- 提供此脚本作为EMR引导脚本的一部分,以获取文件列表
- 在同一个脚本中,您可以编写代码将路径保存在/mnt/ 路径下的文本文件中。
- 从mapreduce代码中读取此路径,并提供给mapper和reducers的arg列表
My Github Repository
简单的命令,如:制作文件夹,
将文件放入hdfs;阅读,
清单和
写数据存在于JAVA API文件夹中。
您还可以在其他文件夹中查找java中的map-reduce代码。