`
king_c
  • 浏览: 225329 次
  • 性别: 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数据迁移--从Oracle向Hadoop

    Recorder类中应包含与Oracle数据库中表字段相对应的数据成员,并且需要实现write和readFields方法,这两个方法用于将数据写入到HDFS和从HDFS读取数据。 MapReduce程序大致分为三个主要部分:Map阶段、Shuffle阶段和...

    Hadoop数据迁移--从Hadoop向Oracle

    为了实现这种迁移,我们通常使用MapReduce编程模型,它允许Hadoop访问和写入Oracle数据库,并将数据从HDFS传输到Oracle中。 首先,要实现Hadoop到Oracle的数据迁移,需要配置相关的数据库信息类DBInfo,该类记录了...

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

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

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

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

    基于Django和Hadoop集群进行的大数据分析平台.zip

    标题中的“基于Django和Hadoop集群进行的大数据分析平台”是指一个使用Python的Django框架构建的系统,该系统设计用于处理和分析大数据,并且它利用了Hadoop集群的分布式计算能力。这样的平台通常用于存储、处理和...

    Hadoop学习统计上网流量源数据

    在大数据处理领域,Hadoop是一个不可或缺的开源框架,它被广泛用于存储和处理海量数据。本教程将聚焦于如何利用Hadoop对上网流量源...这仅仅是Hadoop在大数据分析中的一个应用场景,实际中,它还有更多潜力等待挖掘。

    hadoop教程URL

    - **数据分析**:帮助企业从大量数据中提取有价值的信息。 - **搜索引擎优化**:通过分析网页链接结构和内容来提升搜索结果质量。 - **社交媒体分析**:分析用户的社交行为,为用户提供个性化推荐。 - **金融风险...

    springboot对hadoop增删改查源码及hadoop图片访问

    - 当用户尝试在IE浏览器中访问存储在Hadoop上的图片时,如果直接访问HDFS的URL,浏览器可能无法正确解析二进制数据,而是将其当作文本显示,即出现“显示源码”的问题。 - 为了解决这个问题,我们通常会在服务器端...

    hadoop与mysql数据库相连读出数据.pdf

    从标题和描述中,我们可以了解到本文的主要知识点是Hadoop与MySQL数据库的集成,使用Hadoop读取MySQL数据库中的数据。 从标签中,我们可以看到本文没有提供任何标签信息。 从部分内容中,我们可以看到本文提供了...

    基于Hadoop的Web日志分析,包括日志的清洗、日志的统计分析、统计结果的导出、指标数据的Web展示.zip

    一种常见方法是使用BI工具(如Tableau、Power BI)直接连接Hadoop集群获取数据,或者将数据导入到数据仓库(如Hive、Impala),再由后端服务(如Node.js、Python Flask)提取数据并渲染图表。 5. **Hadoop组件详解*...

    IT面试-Hadoop总结-云计算

    2. 数据流系统:数据流系统是Hadoop中的一个高性能数据处理工具,提供了实时数据处理能力。 3. Streaming Storm:Streaming Storm是Hadoop中的一个流式数据处理工具,提供了高性能和高可靠性的数据处理能力。 七、...

    hadoop中实现java网络爬虫(示例讲解)

    编写Map函数,从InputFormat中读取数据,解析每个URL的HTML内容。Reduce函数则负责聚合和处理这些数据,可能包括统计、分类等操作。 8. **数据分析与结果读取** MapReduce完成后,结果将保存在HDFS上。可以使用...

    基于Hadoop 2.7.7 的中文词频统计工具(JavaWeb).zip

    在IT领域,尤其是在大数据处理和分析的环境中,Hadoop是一个至关重要的框架。本文将深入探讨基于Hadoop 2.7.7的中文词频统计工具,这是一个JavaWeb应用程序,用于处理大规模文本数据并计算其中每个中文词汇出现的...

    Hadoop从入门到上手企业开发

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

    基于Hadoop实现对网站日志数据分析 包含150M .log数据

    在这个项目中,日志数据作为输入,通过Hadoop和MapReduce的处理,可以生成有价值的洞察。 5. **Java编程**:Hadoop的API主要由Java编写,因此通常使用Java来开发MapReduce程序。开发者需要熟悉Java,以及Hadoop的...

    apache日志hadoop大数据分析项目:清洗数据核心功能解说及代码实现

    在本项目中,我们关注的主要目标是从Apache日志中提取以下几类有价值的信息: 1. **IP地址**:用于跟踪用户的地理位置或行为模式。 2. **访问时间**:帮助分析流量高峰时段或异常访问时间。 3. **URL地址**:了解...

    hadoop api.doc

    1. **通过URL读取**: 可以使用`java.net.URL`和`org.apache.hadoop.io.IOUtils.copyBytes`方法,通过设置URL流处理器工厂(`FsUrlStreamHandlerFactory`)来直接从HDFS读取数据。 2. **使用HDFS API读取**: 通过`...

    hadoop分布式网络爬虫

    在Hadoop分布式网络爬虫中,Map阶段负责将输入数据(网页URL)分割成键值对,并分配给多个工作节点进行并行处理。每个工作节点上的任务是对分配的URL进行解析,提取出其中的链接,并生成新的URL-key值对。Reduce阶段...

    Hadoop就业面试宝典

    - **信息提取**: 从大量非结构化数据中提取有价值的信息。 #### 二、MapReduce编程模型 - **概念**: MapReduce是一种编程模型,用于大规模数据集的并行运算。它由两部分组成:Map函数和Reduce函数。 - **工作...

Global site tag (gtag.js) - Google Analytics