使用 FSDataInputStream获取 HDFS 的 /user /hadoop/目录下的 task.txt 的文件内容,并输出,其 uri / hdfs://localhost: 9000/user/hadoop/task.txt
时间: 2024-09-29 20:10:35 浏览: 63
在Hadoop分布式文件系统(HDFS)中,你可以使用Apache Hadoop的`FSDataInputStream`类配合`FileSystem`接口来读取文件的内容。假设你已经有了Hadoop配置并创建了一个`FileSystem`实例,下面是一个简单的步骤说明如何获取"/user/hadoop/task.txt"文件的内容:
```java
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
public class HdfsFileReader {
public static void main(String[] args) throws Exception {
// 初始化Hadoop配置
Configuration conf = new Configuration();
FileSystem fs = FileSystem.get(conf);
// 定义文件路径
Path filePath = new Path("hdfs://localhost:9000/user/hadoop/task.txt");
// 检查文件是否存在
if (fs.exists(filePath)) {
try (FSDataInputStream in = fs.open(filePath)) {
byte[] buffer = new byte[1024];
int bytesRead;
while ((bytesRead = in.read(buffer)) != -1) {
String content = new String(buffer, 0, bytesRead);
System.out.println(content); // 输出文件内容
}
} catch (IOException e) {
e.printStackTrace();
}
} else {
System.out.println("The file does not exist.");
}
// 关闭文件系统连接
fs.close();
}
}
```
当你运行这个程序时,它会打开指定的HDFS文件并逐块读取内容。请注意,你需要将此代码放入Hadoop环境并且有正确的权限才能访问"/user/hadoop/"目录。
阅读全文