mapreduce—使用java代码运行简单的hadoop命令

9vw9lbht  于 2021-06-04  发布在  Hadoop
关注(0)|答案(2)|浏览(319)

我想使用hadoop命令列出文件。”hadoop fs-ls文件路径”。我想写一个java代码来实现这一点。我可以写一小段java代码,制作一个jar并将其提供给MapReduceJob(AmazonEMR)来实现这一点吗?你能告诉我代码和步骤,我可以用它来实现这一点吗?

d8tt03nd

d8tt03nd1#

这是我的github存储库

简单的命令,如:

制作文件夹,
将文件放入hdfs,读取,
上市和
写入数据存在于javaapi文件夹中。
您还可以浏览其他文件夹以获得java中的map reduce代码。

uujelgoq

uujelgoq2#

您可以使用如下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
使用hadoopfs-ls命令创建shell脚本以读取文件列表
提供此脚本作为emr引导脚本的一部分,以获取文件列表
在同一个脚本中,您可以编写代码将路径保存在path/mnt下的文本文件中/
从map reduce代码中读取此路径,并为Map器和reducer提供to arg列表

相关问题