Python太低级,我选 C++?
|
3.6 OutputFormat OutputFormat 是 MapReduce 输出的基类,常见的实现类如下: 3.5.1 TextOutputFormat 系统默认输出格式,把每条记录写为文本行,他的K跟V是任意类型,系统在写入时候会统一转化为字符串。 3.5.2 SequenceFileOutputFormat 此模式下的输出结果作为后续MapReduce任务的输入,该模式下数据格式紧凑,很容易被压缩。 3.5.3 自定义OutputFormat 如果需求不满足可按需求进行自定义。
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 虚拟存储过程:
切片过程: 判断虚拟存储的文件大小是否大于setMaxInputSplitSize值,大于等于则单独形成一个切片。
如果不大于则跟下一个虚拟存储文件进行合并,共同形成一个切片。 (编辑:柳州站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |

