hadoop详解(二) java访问hdfs

所有源码在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,以便于您获取更多的相关知识。

时间: 2024-10-31 02:41:15

hadoop详解(二) java访问hdfs的相关文章

使用Java构造和解析Json数据的两种方法(详解二)_java

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,是理想的数据交换格式.同时,JSON是 JavaScript 原生格式,这意味着在 JavaScript 中处理 JSON数据不须要任何特殊的 API 或工具包. 在www.json.org上公布了很多JAVA下的json构造和解析工具,其中org.json和json-lib比较简单,两者使用上差不多但还是有些区别.下面接着介绍用org.json构造和解析Json数据的方法

Bootstrap框架的学习教程详解(二)_javascript技巧

Bootstrap,来自 Twitter,是目前最受欢迎的前端框架.Bootstrap 是基于 HTML.CSS.JAVASCRIPT 的,它简洁灵活,使得 Web 开发更加快捷. 一.下载Bootstrap Bootstrap (当前版本 v3.3.0)提供以下几种方式帮你快速上手,每一种方式针对具有不同技能等级的开发者和不同的使用场景. 下载地址:http://v3.bootcss.com/getting-started/ PS:其实我们不用下载bootstrap也可以使用它: Bootst

详解在Java的Struts2框架中配置Action的方法_java

在Struts2中Action部分,也就是Controller层采用了低侵入的方式.为什么这么说?这是因为在Struts2中action类并不需要继承任何的基类,或实现任何的接口,更没有与Servlet的API直接耦合.它通常更像一个普通的POJO(通常应该包含一个无参数的execute方法),而且可以在内容定义一系列的方法(无参方法),并可以通过配置的方式,把每一个方法都当作一个独立的action来使用,从而实现代码复用. 例如: package example; public class U

Android 布局学习之——Layout(布局)详解二(常见布局和布局参数)

  [Android布局学习系列]   1.Android 布局学习之--Layout(布局)详解一   2.Android 布局学习之--Layout(布局)详解二(常见布局和布局参数)   3.Android 布局学习之--LinearLayout的layout_weight属性   4.Android 布局学习之--LinearLayout属性baselineAligned的作用及baseline      Layout Parameters(布局参数):            在XML文

Masonry自动布局详解二:动画更新约束

Masonry自动布局详解二:动画更新约束 说到iOS自动布局,有很多的解决办法.有的人使用xib/storyboard自动布局,也有人使用frame来适配.对于前者,笔者并不喜欢,也不支持.对于后者,更是麻烦,到处计算高度.宽度等,千万大量代码的冗余,对维护和开发的效率都很低. 笔者在这里介绍纯代码自动布局的第三方库:Masonry.这个库使用率相当高,在全世界都有大量的开发者在使用,其star数量也是相当高的. 支持原创,请阅读原文 效果图 本节详解Masonry的以动画的形式更新约束的基本

IReport与JasperReport开发详解二

详解  IReport与JasperReport开发详解二        3.2.1  设计报表                现在请点击菜单"DataSource"然后选取中"Report query"项,也可以点击图标 ,接着IReport会弹出一个对话框(如图):现在我们在"Report SQL Query"中输入SQL语句"select * from titles",然后去掉"Automatically Re

详解全站 HTTPS 访问优化

本文讲的是详解全站 HTTPS 访问优化,HTTPS 协议就是 HTTP+SSL/TLS,即在 HTTP 基础上加入 SSL /TLS 层,提供了内容加密.身份认证和数据完整性3大功能,目的就是为了加密数据,用于安全的数据传输. HTTPS 通过3大功能增加了数据传输安全,但同时也给Web性能优化带来了新的挑战. HTTPS降低用户访问速度(需多次握手) 网站改用 HTTPS 以后,由 HTTP 跳转到 HTTPS 的方式增加了用户访问耗时(多数网站采用 301.302 跳转) HTTPS 涉及

QtDBus编程详解(二)

                                                           QtDBus编程详解(二)   我在上一篇博客QtDBus编程详解(一)中主要讲述了与QtDBus以及DBus相关的基本概念,这一章节,我将重点讲述关于QtDBus通信.   QtDBus通信,就必须有服务端和客户端(关键是弄清楚哪一端是server,哪一端是client). 我们先来看看,QtDBus通信,server和client需要做些什么工作.   server: 1.申

Android Loader 异步加载详解二:探寻Loader内部机制

Android Loader 异步加载详解二:探寻Loader内部机制 转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/70259914 本文出自[赵彦军的博客] Android Loader 异步加载详解一:基础概念 Android Loader 异步加载详解二:探寻Loader内部机制 在上一篇文章中,讲解了 Loader 的基本概念.这一篇将会用实战的方式来探寻 Android Loader的内部机制.我们准备做一个 读取手