JAVA API实现hdfs的文件操作需要三个依赖包hadoop-common、hadoop-hdfs和hadoop-client。
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-common</artifactId>
<version>2.6.0</version>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-hdfs</artifactId>
<version>2.6.0</version>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-client</artifactId>
<version>2.6.0</version>
</dependency>
HDFS文件操作步骤如下四步:
1.创建配置文件 Configuration 类
2.获取文件系统 FileSystem类中get()方法获取hdfs文件对象
3.调用API操作 FileSystem中对应方法mkdirs()、copyFromLocalFile()、copyToLocalFile()、delete()
4.关闭资源
package com.hadoop;
import static org.junit.Assert.assertTrue;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.junit.Test;
import java.net.URI;
public class AppTest {
//新建hdfs文件夹
@Test
public void testMkdirs() throws Exception{
//1.创建配置文件
Configuration conf = new Configuration();
//2.获取文件系统,HDFS文件系统 格式 hdfs://虚拟机:9000
FileSystem fs = FileSystem.get(new URI("hdfs://192.168.197.106:9000"), conf,"root");
//3.调用API操作
fs.mkdirs(new Path("/user/java"));
//4.关闭资源
fs.close();
}
//上传一个文件
@Test
public void testCopyFromLocalFile() throws Exception{
//1.创建配置文件
Configuration conf = new Configuration();
//2.获取系统文件
FileSystem fs = FileSystem.get(new URI("hdfs://192.168.197.106:9000"), conf,"root");
//3.API操作
fs.copyFromLocalFile(new Path("D:\\BaiduNetdiskDownload\\20200106\\Hadoop\\projects\\hdfsRW\\data\\test.txt"),new Path("/user/java"));
//4.关闭资源
fs.close();
}
//下载文件
@Test
public void copyToLocalFile() throws Exception{
//1.创建配置文件
Configuration conf = new Configuration();
//2.获取系统文件
FileSystem fs = FileSystem.get(new URI("hdfs://192.168.197.106:9000"), conf,"root");
//3.API操作
fs.copyToLocalFile(new Path("/hdfs/shell/test.txt"),new Path("D:\\BaiduNetdiskDownload\\20200106\\Hadoop\\projects\\hdfsRW\\data\\test2.txt"));
//4.关闭资源
fs.close();
}
//删除文件/文件夹
@Test
public void testDelete() throws Exception{
//1.创建配置文件
Configuration conf = new Configuration();
//2.获取系统文件
FileSystem fs = FileSystem.get(new URI("hdfs://192.168.197.106:9000"), conf,"root");
//3.API操作
//b:代表是否递归,true会删除指定文件夹及内容,false删除指定文件
fs.delete(new Path("/user/java/test.txt"),false);
//4.关闭资源
fs.close();
}
}