HDFS API操作的访问方式 :主要分为使用文件系统访问方式和URL访问方式
package com.wyg.hdfs;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URI;
import java.net.URISyntaxException;
import org.apache.commons.io.IOUtils;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.FsUrlStreamHandlerFactory;
import org.junit.Test;
public class HDFSAPIdemo {
// 文件系统访问 方式一
@Test
public void getFileSystem1() throws IOException {
//1.实例化对象
Configuration conf=new Configuration();
//2、设置文件系统类型
conf.set( "fs.defaultFS", "hdfs://192.168.2.101:9000");
//3、获取指定的文件系统
FileSystem fileSystem=FileSystem.get(conf);
//4、输出
System.out.println(fileSystem);
}
//方式二
@Test
public void getFileSystem2() throws IOException {
FileSystem fileSystem=FileSystem.get(new Configuration());
System.out.println(fileSystem);
}
//方式三
@Test
public void getFileSystem3() throws IOException {
//实例化文件对象
Configuration conf=new Configuration();
//指定文件系统类型
FileSystem fileSystem=FileSystem.newInstance(conf);
System.out.println(fileSystem);
}
//方式四
@Test
public void getFileSystem4() throws IOException, URISyntaxException {
FileSystem fileSystem=FileSystem.newInstance(new URI("hdfs://192.168.2.101:9000"), new Configuration());
System.out.println(fileSystem);
}
//url访问 方式三
@Test
public void urlHdfs() throws IOException {
// 注册url
URL.setURLStreamHandlerFactory(new FsUrlStreamHandlerFactory());
// 获取hdfs文件的输入流
InputStream inputStream = new URL("hdfs://192.168.2.101:9000/xiaohua.txt").openStream();
// 获取本地文件的输出流
FileOutputStream outputStream = new FileOutputStream(new File("E:\\banzhang.txt"));
// 实现文件的拷贝
IOUtils.copy(inputStream, outputStream);
// 关系流
IOUtils.closeQuietly(inputStream);
IOUtils.closeQuietly(outputStream);
}
}
在编写代码的过程中需要注意的是导包不能导错
JUnit测试类的使用,也可以叫单元测试
第一步:右键maven工程
第二步:
可以单独运行某个单元,也可以运行所有单元,如果想运行单个单元就右击那个单元运行