要从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
分享到:
相关推荐
Recorder类中应包含与Oracle数据库中表字段相对应的数据成员,并且需要实现write和readFields方法,这两个方法用于将数据写入到HDFS和从HDFS读取数据。 MapReduce程序大致分为三个主要部分:Map阶段、Shuffle阶段和...
为了实现这种迁移,我们通常使用MapReduce编程模型,它允许Hadoop访问和写入Oracle数据库,并将数据从HDFS传输到Oracle中。 首先,要实现Hadoop到Oracle的数据迁移,需要配置相关的数据库信息类DBInfo,该类记录了...
从Hadoop URL中读取数据 通过FileSystem API读取数据 写入数据 目录 查询文件系统 删除数据 数据流 文件读取剖析 文件写入剖析 一致模型 通过 distcp并行拷贝 保持 HDFS 集群的均衡 ...
从Hadoop URL中读取数据 通过FileSystem API读取数据 写入数据 目录 查询文件系统 删除数据 数据流 文件读取剖析 文件写入剖析 一致模型 通过 distcp并行拷贝 保持 HDFS 集群的均衡 Hadoop的归档文件 使用Hadoop归档...
标题中的“基于Django和Hadoop集群进行的大数据分析平台”是指一个使用Python的Django框架构建的系统,该系统设计用于处理和分析大数据,并且它利用了Hadoop集群的分布式计算能力。这样的平台通常用于存储、处理和...
在大数据处理领域,Hadoop是一个不可或缺的开源框架,它被广泛用于存储和处理海量数据。本教程将聚焦于如何利用Hadoop对上网流量源...这仅仅是Hadoop在大数据分析中的一个应用场景,实际中,它还有更多潜力等待挖掘。
- **数据分析**:帮助企业从大量数据中提取有价值的信息。 - **搜索引擎优化**:通过分析网页链接结构和内容来提升搜索结果质量。 - **社交媒体分析**:分析用户的社交行为,为用户提供个性化推荐。 - **金融风险...
- 当用户尝试在IE浏览器中访问存储在Hadoop上的图片时,如果直接访问HDFS的URL,浏览器可能无法正确解析二进制数据,而是将其当作文本显示,即出现“显示源码”的问题。 - 为了解决这个问题,我们通常会在服务器端...
从标题和描述中,我们可以了解到本文的主要知识点是Hadoop与MySQL数据库的集成,使用Hadoop读取MySQL数据库中的数据。 从标签中,我们可以看到本文没有提供任何标签信息。 从部分内容中,我们可以看到本文提供了...
2. 数据流系统:数据流系统是Hadoop中的一个高性能数据处理工具,提供了实时数据处理能力。 3. Streaming Storm:Streaming Storm是Hadoop中的一个流式数据处理工具,提供了高性能和高可靠性的数据处理能力。 七、...
编写Map函数,从InputFormat中读取数据,解析每个URL的HTML内容。Reduce函数则负责聚合和处理这些数据,可能包括统计、分类等操作。 8. **数据分析与结果读取** MapReduce完成后,结果将保存在HDFS上。可以使用...
020 结合WordCount实例讲解Hadoop的数据存储和数据计算 021 Hadoop 五大服务与配置文件中的对应关系 022 分析Hadoop 三种启动停止方式的Shell 脚本 023 去除警告【Warning$HADOOP HOME is deprecated。】 024 Hadoop...
在这个项目中,日志数据作为输入,通过Hadoop和MapReduce的处理,可以生成有价值的洞察。 5. **Java编程**:Hadoop的API主要由Java编写,因此通常使用Java来开发MapReduce程序。开发者需要熟悉Java,以及Hadoop的...
在本项目中,我们关注的主要目标是从Apache日志中提取以下几类有价值的信息: 1. **IP地址**:用于跟踪用户的地理位置或行为模式。 2. **访问时间**:帮助分析流量高峰时段或异常访问时间。 3. **URL地址**:了解...
1. **通过URL读取**: 可以使用`java.net.URL`和`org.apache.hadoop.io.IOUtils.copyBytes`方法,通过设置URL流处理器工厂(`FsUrlStreamHandlerFactory`)来直接从HDFS读取数据。 2. **使用HDFS API读取**: 通过`...
在Hadoop分布式网络爬虫中,Map阶段负责将输入数据(网页URL)分割成键值对,并分配给多个工作节点进行并行处理。每个工作节点上的任务是对分配的URL进行解析,提取出其中的链接,并生成新的URL-key值对。Reduce阶段...
- **信息提取**: 从大量非结构化数据中提取有价值的信息。 #### 二、MapReduce编程模型 - **概念**: MapReduce是一种编程模型,用于大规模数据集的并行运算。它由两部分组成:Map函数和Reduce函数。 - **工作...
包括如何从Hadoop URL读取数据,使用FileSystem API读写数据,以及Hadoop文件系统的命令行操作。在实际操作中,对HDFS的读写流程、文件系统的操作以及数据读写过程中的目录管理和数据一致性模型的理解,都是至关重要...
- 在Mapper阶段获取数据:在MapReduce的Mapper阶段,DBInputFormat根据配置的SQL语句,通过JDBC接口从数据库中读取数据,转化为适合MapReduce处理的键值对。 DBInputFormat的出现为Hadoop增加了与传统数据库交互的...