URL.setURLStreamHandlerFactory(),每个虚拟机只能调用一次这个方法,因此通常在静态中调用这个方法!这个限制以为着如果程序其他的组件已经声明一个实例,则将无法使用这个方法读取。
1.在Eclipse中配置好相关环境
<!-- https://mvnrepository.com/artifact/junit/junit -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.hadoop/hadoop-common -->
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-common</artifactId>
<version>2.6.4</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.hadoop/hadoop-hdfs -->
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-hdfs</artifactId>
<version>2.6.4</version>
</dependency>
2.在hdfs中上传一个文件文件,随意输入几个数据进行测试
3 .在java项目中,利用URL进行数据的读取
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URL;
import org.apache.hadoop.fs.FsUrlStreamHandlerFactory;
import org.apache.hadoop.io.IOUtils;
public class test02 {
static {
/*1.首先需要让java程序能够识别hadoop 的 hdfs URL 方案,
* 这里采用的是通过FsUrlStreamHandlerFactory实例,调用java.net.URL对象
* 的setURLStreamHandlerFactory
* */
URL.setURLStreamHandlerFactory(new FsUrlStreamHandlerFactory());
}
public static void main(String[] args) throws MalformedURLException, IOException {
InputStream in=null;
try {
//配置hdfs主机接口以及文件的路径
in=new URL("hdfs://192.168.137.133:8020/a.txt").openStream();
IOUtils.copyBytes(in, System.out, 4096, true);
}finally {
IOUtils.closeStream(in);
}
}
}
4.控制台的数据
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)