加入收藏 | 设为首页 | 会员中心 | 我要投稿 柳州站长网 (https://www.0772zz.cn/)- 基础存储、数据迁移、云安全、数据计算、数据湖!
当前位置: 首页 > 站长资讯 > 动态 > 正文

Python太低级,我选 C++?

发布时间:2021-01-27 13:24:56 所属栏目:动态 来源:互联网
导读:3.6 OutputFormat OutputFormat 是 MapReduce 输出的基类,常见的实现类如下: 3.5.1 TextOutputFormat 系统默认输出格式,把每条记录写为文本行,他的K跟V是任意类型,系统在写入时候会统一转化为字符串。 3.5.2 SequenceFileOutputFormat 此模式下的输出结

3.6 OutputFormat

OutputFormat 是 MapReduce 输出的基类,常见的实现类如下:

3.5.1 TextOutputFormat

系统默认输出格式,把每条记录写为文本行,他的K跟V是任意类型,系统在写入时候会统一转化为字符串。

3.5.2 SequenceFileOutputFormat

此模式下的输出结果作为后续MapReduce任务的输入,该模式下数据格式紧凑,很容易被压缩。

3.5.3 自定义OutputFormat

如果需求不满足可按需求进行自定义。

  1. 自定义类继承自FileOutputFormat。
  2. 重写RecordWriter,改写具体输出数据的方法write。

3.6 MapReduce 流程

3.6.1 整体流程图
 

TextInputFormat

默认使用类,按行读取每条数据,Key是该行数据的 offset,Value = 行内容。

KeyValueTExtInputFormat

每行都是一条记录,被指定分隔符分割为Key跟Value,默认是 t 。

NLineInputFormat

该模型下每个 map 处理 InputSplit 时不再按照 Block 块去划分,而是按照指定的行数N来划分文件。

自定义InputFormat

基础接口,改写 RecordReader,实现一次读取一个完整文件封装为 KV,使用 SequenceFileOutPutFormat 输出合并文件。

CombineTextInputFormat

用于小文件过多场景,逻辑上合并多个小文件个一个切片任务。较重要 中

3.4.2 CombineTextInputFormat

默认框架 TextInputFormat 切片机制是对任务按文件规划切片,不管文件多小,都会是一个单独的切片,都会交给一个MapTask,这样如果有大量小文件,就会产生大量的MapTask,处理效率极其低下。CombineTextInputFormat 可以将多个小文件从逻辑上规划到一个切片中,这样多个小文件就可以交给一个MapTask处理。主要包含 虚拟存储过程 跟 切片过程。

CombineTextInputFormat.setMaxInputSplitSize(job, 4194304); // 4m

虚拟存储过程:

  1. 文件 <= SplitSize 则单独一块。
  2. 1 * SplitSize < 文件 < 2 * SplitSize 时对半分。
  3. 文件 >= 2*SplitSize时,以 SplitSize 切割一块,剩余部分若 < 2 * SplitSize 则对半分。

切片过程:

判断虚拟存储的文件大小是否大于setMaxInputSplitSize值,大于等于则单独形成一个切片。

如果不大于则跟下一个虚拟存储文件进行合并,共同形成一个切片。

(编辑:柳州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读