`
king_c
  • 浏览: 213757 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

从Hadoop URL 中读取数据

 
阅读更多

要从Hadoop文件系统中读取文件,最简单的方法就是使用java.net.URL 对象打开数据流,进而从中读取数据。

 

例如:

 

		InputStream in = null;
		try{
			in = new URL("hdfs://host/path").openStream();
		}finally{
			IOUtils.closeStream(in);
		}

 

但是要让java能够识别hadoop的hdfs 的url 方案还需要一些额外的工作,可以采用通过FsUrlStreamHandlerFactory 的实例调用URL中的setURLStreamHandlerFactory方法。

 

URL.setURLStreamHandlerFactory(new FsUrlStreamHandlerFactory());

 但是这样操作,也会存在一定的问题。java虚拟机只能调用一次上述方法,因此通常在静态方法中去调用,这就意味着,如果其他程序已经调用过这个方法,那么你的程序将不再能调用这个方案。

 

      完整实例

 

package gucas.xiaoxia;

import java.io.InputStream;
import java.net.URL;

import org.apache.hadoop.fs.FsUrlStreamHandlerFactory;
import org.apache.hadoop.io.IOUtils;

public class CatURL {

	static {
		URL.setURLStreamHandlerFactory(new FsUrlStreamHandlerFactory());
	}

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		InputStream input = null;
		try {
			input = new URL("hdfs://localhost/user/hadoop/map.txt")
					.openStream();

			IOUtils.copyBytes(input, System.out, 4096, false);

		} catch (Exception e) {

			e.printStackTrace();

		} finally {

			IOUtils.closeStream(input);
		}
	}

}

 

输出:

hello world:10hello world:10hello world:10hello world:10hello world:10hello world:10hello world:10hello world:10
hello world:10hello world:10hello world:10hello world:10hello world:10hello world:10hello world:10hello world:10
hello world:10hello world:10hello world:10hello world:10hello world:10hello world:10hello world:10hello world:10
hello world:10hello world:10hello world:10hello world:10hello world:10hello world:10hello world:10hello world:10
 
分享到:
评论
2 楼 king_c 2012-02-21  
jiandandecaicai 写道
你好,请教一下是如何通过Eclipse来连接Hadop机群的,或者说Java中是否有接口实现连接到Hadoop机群。还有你有没Hadoop的Jar包,因为我将你的代码贴到Eclipse上
import org.apache.hadoop.fs.FsUrlStreamHandlerFactory; 
import org.apache.hadoop.io.IOUtils;
以上这两个显示错误。
可能我的问题不是很清楚,不知道大虾可否给留个QQ,小菜可以跟你请教下Hadoop问题。

我的eclipse 也是没有连接上hadoop 但是可以直接在eclipse里面运行hadoop程序,可以留下个email 我发给你
1 楼 jiandandecaicai 2012-02-17  
你好,请教一下是如何通过Eclipse来连接Hadop机群的,或者说Java中是否有接口实现连接到Hadoop机群。还有你有没Hadoop的Jar包,因为我将你的代码贴到Eclipse上
import org.apache.hadoop.fs.FsUrlStreamHandlerFactory; 
import org.apache.hadoop.io.IOUtils;
以上这两个显示错误。
可能我的问题不是很清楚,不知道大虾可否给留个QQ,小菜可以跟你请教下Hadoop问题。

相关推荐

    Hadoop权威指南 第二版(中文版)

     从Hadoop URL中读取数据  通过FileSystem API读取数据  写入数据  目录  查询文件系统  删除数据  数据流  文件读取剖析  文件写入剖析  一致模型  通过 distcp并行拷贝  保持 HDFS 集群的均衡  ...

    Hadoop权威指南(中文版)2015上传.rar

    从Hadoop URL中读取数据 通过FileSystem API读取数据 写入数据 目录 查询文件系统 删除数据 数据流 文件读取剖析 文件写入剖析 一致模型 通过 distcp并行拷贝 保持 HDFS 集群的均衡 Hadoop的归档文件 使用Hadoop归档...

    Hadoop从入门到上手企业开发

    020 结合WordCount实例讲解Hadoop的数据存储和数据计算 021 Hadoop 五大服务与配置文件中的对应关系 022 分析Hadoop 三种启动停止方式的Shell 脚本 023 去除警告【Warning$HADOOP HOME is deprecated。】 024 Hadoop...

    hadoop中文文档

    hadoop 中文文档index Prefetch chain 预处理链 Pre selector Precondition Enforcer Fetch chain 提取链 Fetch DNS Fetch Http Extractor chain抽取链 Extractor HTML Extractor JS Write Chain 写链 ARC ...

    Hadoop实战(第2版)

    6.1.1 提取作业统计信息的工具6.1.2 监控6.2 确定性能问题的原因6.2.1 了解哪些因素会影响MapReduce 作业的性能 6.2.2 map 端异常技术点28 发现输入数据中的坑技术点29 确定map 端数据倾斜问题 技术...

    数据科学导论实验报告 实验2:熟悉常用的HDFS操作

    2. 编程实现一个类“MyFSDataInputStream”,该类继承“org.apache.hadoop.fs.FSDataInputStream”,要求如下:实现按行读取 HDFS 中指定文 件的方法“readLine()”,如果读到文件末尾,则返回空,否则返回文件 一行...

    Hadoop硬实战 [(美)霍姆斯著][电子工业出版社][2015.01]_PDF电子书下载 带书签目录 高清完整版.rar )

    11.2 使用Pig 在日志数据中发现恶意行为者 11.2.1 加载数据 技术点67 加载Apache 日志文件 11.2.2 过滤和投影 技术点68 通过过滤和投影减少数据处理量 11.2.3 分组和聚合UDF 技术点69 IP 地址的分组...

    基于hadoop思维的分布式网络爬虫。.zip

    其主要功能是访问网页、提取数据并存储,以便后续分析或展示。爬虫通常由搜索引擎、数据挖掘工具、监测系统等应用于网络数据抓取的场景。 爬虫的工作流程包括以下几个关键步骤: URL收集: 爬虫从一个或多个初始...

    大数据中数据采集的几种方式.pdf

    ⼤数据中数据采集的⼏种⽅式 ⼀、采集⼤数据的⽅法 1.1通过系统⽇志采集⼤数据 ⽤于系统⽇志采集的⼯具,⽬前使⽤最⼴泛的有:Hadoop 的Chukwa、ApacheFlumeAFacebook的Scribe和LinkedIn的Kafka等。这 ⾥主要学习...

    大数据应用测试经验总结.pdf

    ⼤数据应⽤测试过程与传统的web系统有较⼤的不同,⼤数据应⽤测试通常会分为web侧和ETL侧测试,web侧基本就是功能测试,⽽ETL(Extracting-Transfroming- Loading)测试主要指从任何外部系统提取、转换、载⼊数据到...

    医疗信息化数据中台(人工智能健康一体化平台).pptx

    mail "SMS "URL's " Social " Advertising 模板模型 设备 Apps"ESB"… Beacons"物联网"… 数据流 企业系统 大数据 Hadoop"NoSQL"… 社交网络 Twitter"Yammer"… Search"News"… 其他 机械设备 "日志"… 可视化 医疗...

    大数据面试题,唬住50k.pdf

    client通过hdfs的api并发读取数据。 3. 关闭连接。 1. 举⼀个简单的例⼦说明mapreduce是怎么来运⾏的 ? wordcount的例⼦ 1. 1. ⽤mapreduce来实现下⾯需求? 现在有10个⽂件夹,每个⽂件夹都有1000000个url.现在让你...

    2017最新大数据架构师精英课程

    95_从db输入数据进行mr计算: L. M4 I6 y, R2 l/ u/ L 96_输出数据到db中 97_NLineInputFormat& u( k1 T& z( O# P, S* y1 Y 98_KeyValueTextInputFormat* p$ O1 z- h, n" e( x1 s& c% z' v 99_join mapper端连接- N, ...

    common-crawl-quick-hacks:常见的爬行快速黑客示例

    中的是使用带有 python 脚本的 hadoop 流从元数据集中提取链接的示例 提供了文本数据集的快速概览,并提供了一个用于提取名词短语的简单 NLTK 应用程序(再次使用 python 流) 显示了如何使用 java mapreduce 运行...

    网络爬虫调研报告.doc

    在专业搜索引擎中 ,网络爬虫的任务是获取 Web页面和决定链接的访问顺序 ,它通常从一个 "种子集 "(如用户查询、种子链接或种子页面 )发,以迭代的方式访问页面和提取链接。搜索过程中 ,未访问的链接被暂存在一个称为 ...

    网络爬虫调研报告(1).doc

    在专业搜索引擎中 ,网络爬虫的任务是获取 Web页面和决定链接的访问顺序 ,它通常从一个 "种子集 "(如用户查询、种子链接或种子页面 )发,以迭代的方式访问页面和提取链接。搜索过程中 ,未访问的链接被暂存在一个称为 ...

    网络爬虫调研报告(2).doc

    在专业搜索引擎中 ,网络爬虫的任务是获取 Web页面和决定链接的访问顺序 ,它通常从一个 "种子集 "(如用户查询、种子链接或种子页面 )发,以迭代的方式访问页面和提取链接。搜索过程中 ,未访问的链接被暂存在一个...

    Python示例-从基础到高手PDF

    第 28 章 Python 通过 amqp 消息队列协议中的 Qpid 实现数据通信 第 29 章 python simplejson 模块浅谈 第 30 章 python Howto 之 logging 模块 第 31 章 Python FAQ3-python 中 的原始(raw)字符串

    MR_BBSCrawler:BBSCrawler map缩小版本

    Map过程: MapReduce程序读取输入文件中的url,作为一个map任务进行帖子爬取,将爬取到的每一条帖子输出 Reduce过程:将得到的帖子原样输出 不足 这里map过程应该拿到一个帖子就输出的,而我是拿到该板块所有帖子再输出...

    graduation-design

    这是我的毕设,基于Hadoop做了个JSON文件信息提取工具. what specifial? 依赖org.json:json:20141113 提取特定路径的信息,如路径:o$user->o$url->a$urls->o$0->s$expanded_url, 会提取到http://abcd.exjkd信息. 路径...

Global site tag (gtag.js) - Google Analytics