我想使用hadoop命令列出文件。 “hadoop fs -ls文件路径”。我想编写一个Java代码来实现这一目标。我是否可以编写一小段Java代码,制作一个jar并将其提供给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);
}
在您的map reduce触发器代码(main或run方法)中使用此代码来获取列表,并将其传递给args为map reduce类
选项2
您可以在同一脚本中使用
关于hadoop - 使用Java代码运行简单的Hadoop命令,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25122116/