第1关:HDFS Java API编程 ——文件读写
时间: 2023-11-14 22:11:28 浏览: 484
HDFS是Hadoop分布式文件系统,它提供了Java API来进行文件读写操作。在HDFS中,文件被分成多个块并存储在不同的节点上,因此需要使用分布式文件系统的API来进行文件读写操作。
HDFS Java API提供了以下几个类来进行文件读写操作:
1. FileSystem:表示一个文件系统对象,可以通过它来获取文件系统的配置信息、创建文件、删除文件等操作。
2. Path:表示一个文件或目录的路径。
3. FSDataInputStream:表示一个输入流,可以用来读取HDFS中的文件。
4. FSDataOutputStream:表示一个输出流,可以用来向HDFS中写入数据。
下面是一个简单的示例代码,演示如何使用HDFS Java API进行文件读写操作:
```java
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.fs.FSDataInputStream;
import org.apache.hadoop.fs.FSDataOutputStream;
public class HdfsExample {
public static void main(String[] args) throws Exception {
// 创建一个Configuration对象,用于获取Hadoop配置信息
Configuration conf = new Configuration();
// 获取HDFS文件系统对象
FileSystem fs = FileSystem.get(conf);
// 创建一个Path对象,表示要读取的文件路径
Path inputPath = new Path("/input/test.txt");
// 创建一个FSDataInputStream对象,用于读取文件
FSDataInputStream in = fs.open(inputPath);
// 读取文件内容
byte[] buffer = new byte[1024];
int len = in.read(buffer);
while (len > 0) {
System.out.write(buffer, 0, len);
len = in.read(buffer);
}
// 关闭输入流
in.close();
// 创建一个Path对象,表示要写入的文件路径
Path outputPath = new Path("/output/test.txt");
// 创建一个FSDataOutputStream对象,用于写入文件
FSDataOutputStream out = fs.create(outputPath);
// 写入文件内容
String content = "Hello, HDFS!";
out.write(content.getBytes()); // 关闭输出流
out.close();
}
}
```
阅读全文