设为首页 加入收藏

TOP

未完待续   HDFS中使用hadoop url来读取数据
2019-01-16 00:10:06 】 浏览:47
Tags:待续   HDFS 使用 hadoop url 读取 数据
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sun_wangdong/article/details/74102457

一、使用hadoop url读取数据

从hadoop中的hdfs分布式文件系统中来读取数据,最简单的方法是通过使用java.net.URL对象来打开一个数据流,并从中读取数据,因此,一般的调用格式如下:

InputStream in = null;
try
{
      in = new URL("hfs:///文件路径").openStream();   
}
finally
{
      IOUtils.closeStream(in);
}

这里需要注意的是,通过FsUrlStreamHandlerFactory实例来调用url中的setURLStreamHandlerFactory方法。这种方法在一个java虚拟机中只能调用一次,因此放在一个静态方法中来执行。因此如果程序的其他部分也设置了同样的这个对象,那么就会导致无法从hadoop读取数据。

接下来从hdfs上读取/data/input/test.log中的数据,采用如下代码实现:

public class URLCat
{
    static
    {
        URL.setURLStreamHandlerFactory(new FsUrlStreamHandlerFactory()); //放在static中
    }
    public static void main(String[] args) throws Exception
    {
        InputStream in = null;
        try
        {
            in = new URL(args[0]).openStream();     //其中args[0]表示的就是在命令行中输入的要访问的url的地址
            IOUtils.copyBytes(in,System.out,4096,false); //使用hadoop中简洁的IOUtils类来关闭finally子句中的数据流,同时复制了输出流之间的字节(System.out),用到了copyBytes方法,其中4096参数表示的是复制缓冲区的大小,false表示的是复制后关闭数据流。
        }
        finally
        {
            IOUtils.closeStream(in);
        }
    }
}


上述代码通过打jar包后,放在hadoop运行,且第一个参数表示的是需要查看的文件的url地址,注意要使用hdfs:///表示


二、使用FileSystem API读取数据


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇sqoop   把 hdfs 和关系型数.. 下一篇java hadoop   hdfs 上写文..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目