怎么从HadoopURL中读取数据

本篇内容介绍了“怎么从Hadoop URL中读取数据”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

站在用户的角度思考问题,与客户深入沟通,找到西藏网站设计与西藏网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:成都网站设计、网站制作、企业官网、英文网站、手机端网站、网站推广、域名与空间、网页空间、企业邮箱。业务覆盖西藏地区。

要从Hadoop文件系统中读取文件,一个最简单的方法是使用java.net.URL对象来打开一个数据流,从而从中读取数据。一般的格式如下:
1.    InputStream in = null;  
2. try {  
3.     in = new URL("hdfs://host/path").openStream();  
4.     // process in  
5. } finally {  
6.     IOUtils.closeStream(in);  
7. } 
这里还需要一点工作来让Java识别Hadoop文件系统的URL 方案,就是通过一个FsUrlStreamHandlerFactory实例来调用在URL中的setURLStreamHandler-Factory方法。这种方法在一个Java虚拟机中只能被调用一次,因此一般都在一个静态块中执行。这个限制意味着如果程序的其他部件(可能是不在你控制中的第三方部件)设置一个URLStreamHandlerFactory,我们便无法再从Hadoop中读取数据。下一节将讨论另一种方法。
例3-1展示了以标准输出显示Hadoop文件系统的文件的程序,它类似于Unix的cat命令。
例3-1:用URLStreamHandler以标准输出格式显示Hadoop文件系统的文件
1. public class URLCat {  
2.  
3.  static {  
4.    URL.setURLStreamHandlerFactory(new FsUrlStreamHandlerFactory());  
5.  }  
6.    
7.  public static void main(String[] args) throws Exception {  
8.    InputStream in = null;  
9.    try {  
10.      in = new URL(args[0]).openStream();  
11.      IOUtils.copyBytes(in, System.out, 4096, false);  
12.    } finally {  
13.      IOUtils.closeStream(in);  
14.    }  
15.  }  
16. } 
我们使用Hadoop中简洁的IOUtils类在finally子句中关闭数据流,同时复制输入流和输出流之间的字节(本例中是System.out)。copyBytes方法的最后两个参数,前者是要复制的缓冲的大小,后者表示复制结束后是否关闭数据流。这里是将输入流关掉了,而System.out不需要关闭。

“怎么从Hadoop URL中读取数据”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注创新互联网站,小编将为大家输出更多高质量的实用文章!


名称栏目:怎么从HadoopURL中读取数据
网页地址:http://scyanting.com/article/gsphgo.html