所有源码在github上,https://github.com/lastsweetop/styhadoop
读数据使用hadoop url读取
比较简单的读取hdfs数据的方法就是通过java.net.URL打开一个流,不过在这之前先要预先调用它的 setURLStreamHandlerFactory方法设置为FsUrlStreamHandlerFactory(由此工厂取解析hdfs协议),这个方 法只能调用一次,所以要写在静态块中。然后调用IOUtils类的copyBytes将hdfs数据流拷贝到标准输出流 System.out中,copyBytes前两个参数好理解,一个输入,一个输出,第三个是缓存大小,第四个指定拷贝完 毕后是否关闭流。我们这里要设置为false,标准输出流不关闭,我们要手动关闭输入流。
package com.sweetop.styhadoop; import org.apache.hadoop.fs.FsUrlStreamHandlerFactory; import org.apache.hadoop.io.IOUtils; import java.io.InputStream; import java.net.URL; /** * Created with IntelliJ IDEA. * User: lastsweetop * Date: 13-5-31 * Time: 上午10:16 * To change this template use File | Settings | File Templates. */ public class URLCat { static { URL.setURLStreamHandlerFactory(new FsUrlStreamHandlerFactory()); } public static void main(String[] args) throws Exception { InputStream in = null; try { in = new URL(args[0]).openStream(); IOUtils.copyBytes(in, System.out, 4096, false); } finally { IOUtils.closeStream(in); } } }
使用FileSystem API读取数据
首先是实例化FileSystem对象,通过FileSystem类的get方法 ,这里要传入一个java.net.URL和一个配置Configuration。
然后FileSystem可以通过一个Path对象打 开一个流,之后的操作和上面的例子一样
package com.sweetop.styhadoop; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.Path; import org.apache.hadoop.io.IOUtils; import java.io.InputStream; import java.net.URI; /** * Created with IntelliJ IDEA. * User: lastsweetop * Date: 13-5-31 * Time: 上午11:24 * To change this template use File | Settings | File Templates. */ public class FileSystemCat { public static void main(String[] args) throws Exception { String uri=args[0]; Configuration conf=new Configuration(); FileSystem fs=FileSystem.get(URI.create(uri),conf); InputStream in=null; try { in=fs.open(new Path(uri)); IOUtils.copyBytes(in, System.out, 4096, false); } finally { IOUtils.closeStream(in); } } }
以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索hdfs
, hadoop
, intellij idea
, apache
, import
, configuration
, java中final详解
, 一个
, fs.open方法
, 输入输出流详解
, filesystem
java连接hdfs
hadoop hdfs 访问地址、hadoop访问hdfs、hadoop hdfs java、hadoop hdfs java api、hadoop2.6 hdfs java,以便于您获取更多的相关知识。