MapReduce -读取数据

通过InputFormat 决定读取的数据的类型,然后拆分成一个个InputSplit ,每个inputSplit 对应一个Map 处理,RecordReader 读取InputSplit  的内容给Map 。

InputFormat

决定读取数据的格式,可以是文件或数据库等。

功能:

1) 验证作业输入的正确性,如格式等。

2). 将输入文件切割成逻辑分片(InputSplit) ,一个InputSplit 将会被分配给一个独立的Map 任务

3).提供RecordReader 实现,读取InputSplit中的“K-V 对”供Mapper 使用。

方法:

List getSplit():获取由输入文件计算出输入分片(InputSplit),解决数据或文件分割成片问题。

RecordReader createRecordReader():  创建RecordReader ,从inputSplit 中读取数据,解决读取分片中数据问题。

TextInputFormat: 输入文件中的每一行就是一个记录,key 是这一行的byte offset,而value 是这一行的内容。

KeyValue TextInputFormat: 输入文件中每一行就是一个记录,每一个分割字符切分每行,在分割符字符之前的内容为key,在之后的为value,分隔符变量通过key.value,separator.in.input.line 变量设置,默认为(\t) 字符。

NLineInputFormat: 与TextInputFormat 一样,但每个数据块必须保证有且只有N行mapred.line.input.format.linespermap 属性,默认为1.

SequFileInputFormat:一个用来读取字符流数据的InputFormat,<key,value>为用户自定义的,字符流数据是hadoop 自定义的压缩的二进制数据格式,它用来优化从一个MapReduce 任务的输出到另一个MapReduce 任务的输入之间的数据传输过程。

InputSplit

代表一个个逻辑分片,并没有真正存储数据,只是提供了一个·如何将数据分片的方法。

Split 内有Location 信息,利于数据局部化

一个InputSplit 给一个单独的Map 处理

RecordReader

将InputSplit 拆分成一个个<key,value> 对给Map 处理,也是实际的文件读取分割对象</key,value>

问题

大量小文件如何处理

CombineFileInputFotmat 可以将若干个Split 打包成一个,目的是避免过多的Map 任务(因为Split 的数目决定了Map的数目,大量的Mapper Task 创建销毁开销将是巨大的)

怎么计算split 的

通常一个split 就是一个block (FileInputFormat 仅仅拆分比block 大的文件),这样做的好处是使得Map 可以在存储有当前数据的节点上运行本地的任务,而不需要通过网络进行跨节点的任务调度。

分片间的数据如何处理·

split 是根据文件大小分割的,而一般处理是根据分隔符进行分割的,这样势必存在一条记录横跨两个split。解决办法是只要不是第一个split ,都会远程读取一条记录,不是第一个split 的都会忽略到第一条记录。

hadoop 读取数据相关推荐

  1. hadoop读取mysql数据_Pyspark连接mysql、hive、hdfs 实例展示

    本文展示pyspark与mysql.hive.hdfs的连接实例.一是为了纪念:终于走过n个坑,自己搭配好本地hadoop环境:一是为了让还不会pyspark的人有个初步的印象,毕竟数据分析师除了会使 ...

  2. hadoop 传感器数据_读取模式错误,计算引擎操作复杂……面对Hadoop这些问题该如何应对?...

    作者 | Monte Zweben 译者 | 天道酬勤,责编 | Carol 封图 | CSDN 付费下载自视觉中国 Apache Hadoop于2006年出现在IT领域,它使用商品硬件,为组织提供前 ...

  3. java读取hadoop数据_从Hadoop URL中读取数据_hadoop 数据读取_hadoop读取文件

    3.5  Java接口 在本小节,我们要深入探索Hadoop的Filesystem类:与Hadoop的文件系统交互的API. 虽然我们主要关注的是HDFS的实现DistributedFileSyste ...

  4. internetreadfile读取数据长度为0_Hadoop 读取数据

    MapReduce - 读取数据 通过InputFormat决定读取的数据的类型,然后拆分成一个个InputSplit,每个InputSplit对应一个Map处理,RecordReader读取Inpu ...

  5. 实用 | 从Apache Kafka到Apache Spark安全读取数据

    引言 随着在CDH平台上物联网(IoT)使用案例的不断增加,针对这些工作负载的安全性显得至关重要.本篇博文对如何以安全的方式在Spark中使用来自Kafka的数据,以及针对物联网(IoT)使用案例的两 ...

  6. hbase数据读取优化_从hbase读取数据优化策略和实验对照结果

    起因:工作须要.我须要每5分钟从hbase中.导出一部分数据,然后导入到ES中.可是在開始阶段编写的python脚本,我发现从hbase读取数据的速度较慢,耗费大量的时间.影响整个导数过程,恐怕无法在 ...

  7. Hadoop大数据--Mapreduce程序运行并发度

    reduce task数量的决定机制 1.业务逻辑需要 2.数据量大小 设置方法: job.setNumReduceTasks(5) map task数量的决定机制 由于map task之间没有协作关 ...

  8. hadoop大数据--深入讲解hdfs源码

    hdfs 读数据的流程 1.跟namenode通信查询元数据,找到文件块所在的datanode服务器. 2.挑选一台datanode(就近原则,然后随机)服务器,请求建立socket流. 3.data ...

  9. HBase建表高级属性,hbase应用案例看行键设计,HBase和mapreduce结合,从Hbase中读取数据、分析,写入hdfs,从hdfs中读取数据写入Hbase,协处理器和二级索引

    1. Hbase高级应用 1.1建表高级属性 下面几个shell 命令在hbase操作中可以起到很到的作用,且主要体现在建表的过程中,看下面几个create 属性 1. BLOOMFILTER 默认是 ...

最新文章

  1. 配置网口相机(大恒水星相机)
  2. python怎么输入列表元素每个元素占一行_如何对列表的每个元素执行操作并将结果放在Python的新列表中?...
  3. 一次有趣的XSS漏洞挖掘分析(1)
  4. 【Boost】boost库中thread多线程详解8——call_once仅运行一次
  5. 机器学习特征构建_使用Streamlit构建您的基础机器学习Web应用
  6. 经典正则表达式(转)
  7. C语言1094题目,P1094 (C语言代码)
  8. 发光二极管pcb封装图画法_【AD封装】PH2.0座子插件贴片(带3D)
  9. VBS操作 PDF时,常用快捷键(Adobe Acrobat Reader)
  10. 兼容多种浏览器“复制到剪贴板”的解决方案
  11. talib python文档_talib 中文文档(一):快速开始
  12. 三维空间数据建模——Smart3D的安装
  13. 中国医药中间体行业盈利状况与竞争趋势预测报告(新版)2022-2027年
  14. 在电脑上修改apk、重新签名apk
  15. TAMER——Training an Agent Manually Via Evaluative Reinforcement
  16. 51nod 1113 矩阵快速幂 (矩阵的n次方)
  17. 智能锁方案PCBA原理图PCB单片机开发板源码wifi远程开锁。 提供全套技术资料,包括原理图,PCB图,程序源码,bom清单,说明书等
  18. erdas查看灰度直方图_实习1:ERDAS软件视窗基本操作
  19. 基于autojs7的亚丁号点淘辅助
  20. 眼图观测实验报告_眼图观测实验..doc

热门文章

  1. Outlook 2010 电子邮件数字签名和加密指南
  2. SpringBoot+SpringSecurity+MySQL+Html图书管理系统
  3. 以政府门户网站统筹电子政务发展
  4. Linux 系统基础知识
  5. 【经验】短接 Flash 解决二次量产金士顿 DTI G2 4GB U盘(群联PS2251-39)问题
  6. python+milvus实现一个以图搜图系统
  7. Android-APK极限压缩
  8. Lodop中页眉页脚的实现
  9. 【Machine Learning】机器学习之一些数学相关的知识储备
  10. csgo社区服务器文件位置,csgo社区服务器在哪