大数据系列windows环境下搭建hadoop开发环境从hadoop URL读取数据
Posted 霓裳梦竹
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了大数据系列windows环境下搭建hadoop开发环境从hadoop URL读取数据相关的知识,希望对你有一定的参考价值。
前言
搭建完hadoop集群之后在windows环境下搭建java项目进行测试 操作hdfs中的文件
版本一
package com.slp.hadoop274.hdfs; import java.io.IOException; import java.io.InputStream; import java.net.URL; import java.net.URLConnection; import org.apache.hadoop.fs.FsUrlStreamHandlerFactory; import org.junit.Test; /** * * @author sangliping *完成hdfs操作 */ public class TestHDFS { /** * 读取hdfs文件 * @throws IOException */ @Test public void readFile() throws IOException{ URL url = new URL("hdfs://192.168.181.201:8020/user/sanglp/hadoop/copyFromLocal"); URLConnection con = url.openConnection(); InputStream is = con.getInputStream(); byte[] buf = new byte[is.available()]; is.read(buf); is.close(); String str = new String(buf,"UTF-8"); System.out.println(str); } }
以上运行测试的时候会报错,原因是URL无法识别hdfs协议。
版本二、
package com.slp.hadoop274.hdfs; import java.io.IOException; import java.io.InputStream; import java.net.URL; import java.net.URLConnection; import org.apache.hadoop.fs.FsUrlStreamHandlerFactory; import org.junit.Test; /** * * @author sangliping *完成hdfs操作 */ public class TestHDFS { static{ //注册hdfs协议否则URL无法识别该协议 URL.setURLStreamHandlerFactory(new FsUrlStreamHandlerFactory()); } /** * 读取hdfs文件 * @throws IOException */ @Test public void readFile() throws IOException{ URL url = new URL("hdfs://192.168.181.201:8020/user/sanglp/hadoop/copyFromLocal"); URLConnection con = url.openConnection(); InputStream is = con.getInputStream(); byte[] buf = new byte[is.available()]; is.read(buf); is.close(); String str = new String(buf,"UTF-8"); System.out.println(str); } }
这个时候就可以正确的打印出hdfs文件copyFromLocal的文件内容。
附:可以将hadoop解压文件下etc中的log4j.properties文件放到项目文件src文件下使控制台打印更友好。
以上是关于大数据系列windows环境下搭建hadoop开发环境从hadoop URL读取数据的主要内容,如果未能解决你的问题,请参考以下文章
大数据学习系列之四 ----- Hadoop+Hive环境搭建图文详解(单机)
Hadoop大数据平台组件搭建系列——Zookeeper组件配置