您的位置:首页 > 运维架构

hadoop mapReduce程序模板-倒排索引

2014-11-12 14:40 309 查看
问题描述:统计某个号码被哪些号码呼叫了

输入文件如下:

13588888888 112

13678987879 13509098987

18987655436 110

2543789 112

15699807656 110

011-678987 112

说明:每一行为一条电话通话记录,左边的号码(记为a)打给右边的号码(记为b号码),中间用空格隔开

要求:

将以上文件以如下格式输出:

110 18987655436|15699807656

112 13588888888|011-678987

13509098987 13678987879

说明:左边为被呼叫的号码b,右边为呼叫b的号码a以"|"分割

解决思想很简单:Map中将a,b号码分割key为b,value为a写入context

Reduce中将values以"|"迭代分割

初始化job 时要注意输入输出类型:
job.setInputFormatClass(TextInputFormat.class); //数据到达map前,输入给map函数的时数据的组织结构形式,hadoop 会根据你设置的格式给map函数传递相应的key,value 实参,如TextInputFormat格式是默认的数据类型,它给map传递的key是每一行的第一的字节的在整个输入位置,value
就是所在行的数据值。
job.setOutputFormatClass(TextOutputFormat.class);//默认格式,将key value转出字符串输出
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: