假设有一个HDFS集群,其中某个目录下有若干个文件(即文件个数可能不止一个),现需要通过Java程序读取该目录下所有文件的内容并打印到控制台上,请使用HDFS Java API完成此任务。
时间: 2024-02-05 21:13:31 浏览: 130
可以使用HDFS Java API中的FileSystem和Path类来实现读取HDFS目录下所有文件的内容并打印到控制台的任务。以下是示例代码:
```java
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.FileStatus;
import org.apache.hadoop.fs.Path;
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class HDFSReader {
public static void main(String[] args) throws Exception {
String hdfsUri = "hdfs://localhost:9000"; // HDFS的URI
String dirPath = "/user/hadoop/input/"; // 目标目录路径
Configuration conf = new Configuration();
conf.set("fs.defaultFS", hdfsUri);
FileSystem fs = FileSystem.get(conf);
Path dir = new Path(dirPath);
FileStatus[] files = fs.listStatus(dir);
for (FileStatus file : files) {
Path filePath = file.getPath();
BufferedReader br = new BufferedReader(new InputStreamReader(fs.open(filePath)));
String line;
while ((line = br.readLine()) != null) {
System.out.println(line);
}
br.close();
}
fs.close();
}
}
```
在上述代码中,首先我们定义了HDFS的URI和目标目录路径。然后,我们通过Configuration类设置了HDFS的默认URI,并通过FileSystem类获取了HDFS的文件系统对象。接着,我们使用Path类获取目标目录下的所有文件,并对每个文件进行读取和打印操作。最后,我们需要关闭文件系统对象。
阅读全文