hadoop 研究:mapreduce预读自定义方案

在使用hadoop 进行mapreduce过程中 发现需要导入的记录内容复杂  在进行map过程中 value获取的值是按\n来分块 也就是每次value取到的值是\n前面的内容 这难免会导致与功能需求不符(比如一条短信内容中存在回车换行,hadoop就会将一条短信解析成2条)  这时候经讨论 我们提出了3种方案来解决该问题
1、将短信中\n \r 字符串 转义
2、将在一条记录中加入判别符号 并修改hadoop 预读逻辑 进行有目的分块
3、与2类似 运用一串规定好的识别码 将需要取记录的特征记录在一条记录开头,当程序识别到时  就会解析特征码 并取到相应的完整记录

在这三点中 1的缺点在于破坏了数据一致性所以  该方案为下下策;而二方案需要修改内部代码 难度稍大 三方案需要指定一套详细的规则来实现
最终使用2方案来解决hadoop map阶段预读自定义的效果

实现过程简述
主要通过重写TextInputFormat类以及相关的类来实现,原代码中基本逻辑是通过判断\n来截取传入参数
而我们现在需要使程序判断开头和结尾2个特殊值来框定需要的内容 (比如:您的验证码为131\n12414。 加入特殊字符  <xml>您的验证码为131\n12414。</xml>   )即可实现.具体来讲就是把源程序判断\n的逻辑改为判断一个beginStr和一个endStr,再加入部分逻辑来实现特殊值间取内容的形式

转载于:https://www.cnblogs.com/njh2017/p/8696809.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值