hadoop hdfs api 测试代码使用HDFS Java API在HDFS的/user/hadoop目录上创建一个目录test。 在test目录中创建一个文件mytest.txt,在该文件中写入内容Hadoop is very easy to learn。 读取刚刚创建mytest.txt文件中的内容,输出文件内容并换行。
时间: 2024-03-11 12:47:15 浏览: 204
下面是使用 HDFS Java API 在 HDFS 的 /user/hadoop 目录上创建目录 test,创建文件 mytest.txt,写入内容并读取文件内容的代码:
```
import java.io.*;
import java.net.URI;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.*;
import org.apache.hadoop.io.IOUtils;
public class HdfsApiTest {
private static final String HDFS_URI = "hdfs://localhost:9000";
private static final String HDFS_USER = "hadoop";
private static final String HDFS_DIR = "/user/hadoop/";
private static final String HDFS_DIR_TEST = "/user/hadoop/test/";
private static final String FILE_NAME = "mytest.txt";
private static final String FILE_CONTENT = "Hadoop is very easy to learn.";
public static void main(String[] args) throws IOException {
// 获取 Hadoop 配置对象
Configuration conf = new Configuration();
// 设置 HDFS 用户
conf.set("dfs.permissions.enabled", "false");
System.setProperty("HADOOP_USER_NAME", HDFS_USER);
// 获取 HDFS 文件系统对象
FileSystem fs = FileSystem.get(URI.create(HDFS_URI), conf);
// 创建目录
Path dirPath = new Path(HDFS_DIR_TEST);
if (!fs.exists(dirPath)) {
fs.mkdirs(dirPath);
System.out.println("创建目录:" + HDFS_DIR_TEST);
}
// 创建文件
Path filePath = new Path(HDFS_DIR_TEST + FILE_NAME);
if (!fs.exists(filePath)) {
fs.createNewFile(filePath);
System.out.println("创建文件:" + FILE_NAME);
}
// 写入文件内容
FSDataOutputStream outputStream = fs.create(filePath);
outputStream.writeBytes(FILE_CONTENT);
outputStream.close();
System.out.println("写入文件内容:" + FILE_CONTENT);
// 读取文件内容
FSDataInputStream inputStream = fs.open(filePath);
byte[] buffer = new byte[1024];
while (inputStream.read(buffer) > 0) {
System.out.println(new String(buffer));
}
inputStream.close();
// 关闭文件系统对象
fs.close();
}
}
```
注意:在使用 Hadoop Java API 操作 HDFS 的时候,需要设置 `HADOOP_USER_NAME` 环境变量,以指定操作 HDFS 的用户。
阅读全文