计算机系《云计算技术》实验报告-实验七
成绩:98
实验名称:MapReduce 数据统计
实验目的:
学习和掌握利用 MapReduce 进行数据分析,加深对所学知识点的理解,熟悉 MapReduce 的
数据处理流程。
实验要求:
通过 MapReduce 程序实现数据统计,具体要求如下:
假设有一份简单的“个人通讯记录”的数据集,格式如下:
被叫号码,通话时间(秒)
13900000001,20
13900000008,126
……
1)编写一个 MapReduce 程序,统计拨打同一被叫号码的总时长。
2)找出平均通话时间最长的被叫号码。
算法分析:
1、编写一个 MapReduce 程序,统计拨打同一被叫号码的总时长。
(1) MapReduce 输入分片:
有以下三种方法:
a. 使用默认的 TextInputFormat
在文本文件中的每一行为一个记录,键为一行的字节偏移,值为一行的内容
Key: LongWritable
Value: Text
然后在 map 方法中对 value 进行分割使用 split()函数。
b. 使用预定义的 KeyValueText InputFormat
在文本文件中的每一行为一个记录,以每行的第一个分隔符为界,分隔符之前的是键,之后
的是值,分离器在属性 mapreduce.input.keyvaluelinerecordreader.key.value.separator 中设定,
默认为制表符 ( )
Key:Text
Value:Text
然后在 map 方法中对 value 进行数据类型转换。
c. 自定义 InputFormat
实现:在文本文件中的每一行为一个记录,以每行的第一个分隔符为界,分隔符之前的是键,
之后的是值
Key:Text
Value:IntWritable
然 后 map 使 用 预 定 义 的 Marper<K,V>, (MR1 中 IdentityMapper<K,V>) , 实 现
Mapper<K,V,K,V> 就输入直接映射到输出
评论14
最新资源