关于 hadoop 在 java 中 api 的调用
在使用前,请确保 hadoop-client
包已经成功导入
<!-- https://mvnrepository.com/artifact/org.apache.hadoop/hadoop-client -->
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-client</artifactId>
<version>3.3.0</version>
</dependency>
准备工作
// 设置登录用户,确保不会出现权限不足的问题
System.setProperty("HADOOP_USER_NAME","root");
// 新建配置文件对象,请确认导入的类是 hadoop 相关
Configuration conf = new Configuration();
// 给配置文件设置 HDFS 文件系统的默认入口地址,根据情况自行修改参数
conf.set("fs.defaultFS","hdfs://192.168.168.136:9000");
// 通过配置文件,开启文件系统。会抛出 IOException 错误
FileSystem fs = FileSystem.get(conf);
结束工作
// 在完成操作后,记得关闭 文件系统 FileSystem
if( fs != null ){
fs.close();
}
文件操作相关 api
文件夹创建
// 设置文件夹路径
Path path = new Path("/hello");
// 创建文件夹,返回boolean
fs.mkdirs(path);
文件创建
// 设置要创建的文件的路径
Path path = new Path("/hello/a.txt");
// 创建文件
fs.createNewFile(path);
从windows上传文件
// 设置文件上传的位置
Path path = new Path("/");
// 设置文件当前的位置
Path path1 = new Path("file:///E:/hello.txt");
// 文件上传
fs.copyFromLocalFile(path1,path)
写入内容到文件
// 设置文件所在路径
Path path = new Path("/hello.txt");
// FileSystem 通过 create 方法获得输入流,3个参数分别是 路径,是否可写,最大可写入
FSDataOutputStream fos = fs.create(path,true,1024);
// 通过输出流写入内容到文件中,写入的内容是 byte 格式
fos.write("hello".getBytes);
// 关闭输出流
fos.close();
读取文件内容并显示
// 设置文件位置
Path path = new Path("/hello.txt");
// 通过 FileSystem 的 open() 获取输入流
FSDataInputStream open = fs.open(path);
// 设置 1024 字节的缓冲区
byte[] buf = new byte[1024];
int len = 0;
// 循环读取内容到缓冲区,直到文件末尾结束(标识符为 -1)
while( (len = open.read(buf)) != -1){
// 将缓冲区内容打印到控制台
System.out.print( new String(buf,0,len) )
}
//关闭文件输入流
open.close();
文件重命名
// 设置当前文件路径
Path path = new Path("/hello/a.txt");
// 设置修改后的文件路径
Path path1 = new Path("/hello/hello.txt");
// 文件重命名
fs.rename(path,path1);
删除目录
// 设置要删除的文件或文件夹路径
Path path = new Path("/hello/hello.txt");
// 删除文件
fs.delete(path,true);