1、HDFS文件上传
private FileSystem fs;
@Before
public void before() throws URISyntaxException, IOException, InterruptedException {
System.out.println("-------------before--------------");
//1.创建客户端对象
/*
* get(final URI uri,final Configuration conf,final String user)
* uri:HDFS的地址(NameNode的地址)
* conf:在conf中设置一些配置参数
* user:操作HDFS的用户名
* */
URI uri = new URI("hdfs://hadoop102:8020");
Configuration conf = new Configuration();
fs = FileSystem.get(uri, conf, "atguigu");
}
/*
*在单元测试方法执行后执行
* */
@After
public void after(){
System.out.println("----------------------after-------------------");
if (fs != null){
try {
fs.close();
} catch (IOException e) {
throw new RuntimeException(e);
}
}
}
//上传
@Test
public void test() throws IOException {
System.out.println("---------上传----------");
/*
* copyFromLocalFile(boolean delSrc,boolean overwrite,Path src,Path dst)
* delSrc:是否删除源文件(本地的)
* overwrite:如果目标文件存在是否覆盖
* true:表示覆盖
* false:不覆盖(如果目标文件存在直接报错)
* src:源文件路径(本地)
* dst:目标文件路径(HDFS)
* */
fs.copyFromLocalFile(false,true,
new Path("E:\\hadoop_test\\test0\\longge.txt"),
new Path("/input3"));
}
所用的包如下:
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;
2、HDFS下载
private FileSystem fs;
/*
*在单元测试方法执行前执行
* */
@Before
public void before() throws URISyntaxException, IOException, InterruptedException {
System.out.println("-------------before--------------");
//1.创建客户端对象
/*
* get(final URI uri,final Configuration conf,final String user)
* uri:HDFS的地址(NameNode的地址)
* conf:在conf中设置一些配置参数
* user:操作HDFS的用户名
* */
URI uri = new URI("hdfs://hadoop102:8020");
Configuration conf = new Configuration();
fs = FileSystem.get(uri, conf, "atguigu");
}
/*
*在单元测试方法执行后执行
* */
@After
public void after(){
System.out.println("----------------------after-------------------");
if (fs != null){
try {
fs.close();
} catch (IOException e) {
throw new RuntimeException(e);
}
}
}
}
//下载
@Test
public void test2(){
System.out.println("-----------下载------------");
/*
* copyToLocalFile(boolean delSrc,Path dst,boolean useRawLocalFileSystem)
* delSrc:是否删除源文件(HDFS上的)
* src:源文件路径(HDFS上的)
* dst:目标文件路径(Windows)
* useRawLocalFileSystem:是否使用useRawLocalFileSystem文件系统
* true:不会产生crc文件
* false:会产生一个crc文件
* */
try {
fs.copyToLocalFile(false,new Path("/input3/longge.txt"),
new Path("E:\\hadoop_test\\test0"),false);
} catch (IOException e) {
throw new RuntimeException(e);
}
}