hadoop mapreduce 统计所有的key-value中value为空的数目,谢谢大家

linbo_eman 2016-12-20 07:03:15
遇到一个问题,望大家有空可以帮忙看看,小弟感激不尽!

现在在做信令解析,有一条信令:[2016-04-02 09:58:09,724] len:78;type:1002;msc:0E1F;bsc:3F17;time:2016-04-01 16:48:46.494;lac:13883;ci:8713;imsi:460004544938252;msisdn:13994482976;callType:0;disLen:11;disMsisdn:13503531697;remark:0;

map0:
输入:一条信令(上面那一条)
通过解析,得到一个Object
输出:key:imsi
value:{imsi:460004544938252,msisdn:13994482976}

reduce0:
输入:key:imsi
value:List<> {imsi:460004544938252,msisdn:''},{imsi:460004544938252,msisdn:13994482976},{imsi:460004544938252,msisdn:''}

在这里我想统计一下:
1、所有的msisdn为空的个数
2、imsi对应的msisdn为空的个数(List里的msisdn全为空计1)

现在问题是:要把统计的值(一行:日期 | 呼叫总量 | IMSI未解析总呼叫次数 | 占比1 | 总IMSI | 未解析总IMSI数 | 占比2)写到文件中,怎么判断我读的是最后一条信令呢?如果不行的话,把这个reduce的结果传给第二个mapreduce统计怎么实现呢?

希望有空的朋友多多指点!谢谢
...全文
449 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
weixin_45680850 2019-12-18
  • 打赏
  • 举报
回复
long count = 你的map.values().stream().filter(v -> null != v && v > 0).count();
czwanglei 2017-05-30
  • 打赏
  • 举报
回复
reduce 里面逻辑判断啊

51,394

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧