7.Java API 操作 HDFS 文件(一)
任务目的
- 了解 junit 的作用和常用注解
- 掌握使用 Java API 在 HDFS 上创建目录的方法
- 学会使用 Java API 将本地文件上传到 HDFS 指定位置
任务清单
- 任务1:创建目录
- 任务2:上传文件
详细任务步骤
junit 是什么?
junit 是一个 Java 语言的单元测试框架,用于编写和运行可重复的测试。
junit 能做什么?
能让我们快速完成单元测试。简化单元测试,写一点测一点,在编写以后的代码中如果发现问题可以较快的追踪到问题的原因,减小回归错误的纠错难度。
使用 junit 不需要创建 main() 方法,而且每个测试方法一一对应,逻辑特别清晰。
junit 常用注解:
(1) @Test:测试方法
(2) @Before:每个测试方法之前运行
(3) @After:每个测试方法之后运行
任务1:创建目录
通过FileSystem.mkdirs(Path f)
可在 HDFS 上创建文件夹,其中 f
为文件夹的完整路径,mkdirs()
方法可以实现创建多级目录。具体实现如下:
package com.hongyaa.hdfs;
import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
public class HDFSDemo {
FileSystem fs = null;
// 每次执行单元测试前都会执行该方法
@Before
public void setUp() throws IOException, InterruptedException, URISyntaxException {
Configuration conf = new Configuration();
// 不需要配置“fs.defaultFS”参数,直接传入URI和用户身份,最后一个参数是安装Hadoop集群的用户,我的是“root”
fs = FileSystem.get(new URI("hdfs://localhost:9000"), conf, "root");
}
// 单元方法:创建目录
@Test
public void mkdir() throws IllegalArgumentException, IOException {
boolean mkdirs = fs.mkdirs(new Path("/123/1/2"));
System.out.println(mkdirs);
}
// 每次执行单元测试后都会执行该方法,关闭资源
@After
public void tearDown() {
if (null != fs) {
try {
fs.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
执行结果如下所示:
图1
任务2:上传文件
通过FileSystem.copyFromLocalFile(Path src,Path dst)
可将本地文件上传到 HDFS 的指定位置上,其中 src
和 dst
均为文件的完整路径。具体实现如下:
//单元方法:上传文件
@Test
public void addFileToHdfs() throws IOException{
/*
* src:要上传的文件所在的本地路径
* dst:要上传到HDFS的目标路径
*/
Path src=new Path("/root/software/hadoop-2.7.7/README.txt");
Path dst=new Path("/123");
//默认不删除本地源文件,覆盖HDFS同名文件
fs.copyFromLocalFile(src, dst);
}
执行结果如下所示:
图2
标签:,HDFS,fs,org,import,Path,junit From: https://www.cnblogs.com/Cuckoo123456/p/17470435.html