架构训练营第十二周作业
作业一:
第一题
在你所在的公司(行业、领域),正在用大数据处理哪些业务?可以用大数据实现哪些价值?
解答
我所在的公司正好是为电信,金融行业的企业提供大数据解决方案和服务的公司。目前业务主要和中国联通,中国移动进行合作。既包括了批处理范围的数据挖掘,数据分析;也包括了流处理范围的实时数据处理。
例如我正在做的一个联通的“自然人”项目,就是一个大数据的批流混合项目。批处理方面,项目收集全国各省三户数据,统一存储到分布式数据库中,按照用户的证件信息,把用户的全国信息统一到一起进行数据挖掘,数据分析。
流处理方面,支撑了联通的“一证五户”系统,实时计算一个证件(即一个人)是否开户(并且仍然在使用中)超过 5 户。如果超过则按照工信部要求,不能再予新开户。
电信运营商的全国数据的特点具有大数据的特点,数据总量大,且单位时间数据增量也比较大。利用大数据技术,可以实现以前传统数据库无法实现的全国统一数据(即海量数据)的挖掘和分析;而且基于全国统一数据的基础,可以进一步依靠流计算框架,实时支撑一些如“一证五户”的业务。
第二题
分析如下 HiveQL,生成的 MapReduce 执行程序,map 函数输入是什么?输出是什么,reduce 函数输入是什么?输出是什么?
page_view 表和 user 表结构与数据示例如下
解答
Hive 在解析 Join 操作时,首先会针对每个表生成一组 map。两组 map 函数的输入 key 为行偏移量,输入 value 为行数据: map(key: Offset, value: LineOfTable, ...)。
由于之后要进行两个 map 函数结果的 shuffle 和 reduce,这里 map 函数的输出中 value 除了 select 的值,还需要保留来源表的信息(表名或表 ID)。所以 map 函数的输出的 key 仍然是 userid,value 变成了一个二元组,包含来源表的 ID,以及两张表中 select 的 pageid,age 字段: {key: UserId, value: <TableId, pageid>}; {key: UserId, value: <TableId, age>}。
shuffle sort 阶段,同一个 userid 的值会放到以前,这里会把含有不同的来源表 ID 的数据组合到一起。
reduce 函数的输入即第三步 shuffle sort 的输出 reduce(Key: UserId, values: <TableId, AgeOrPageId>[], ...)。reduce 函数过程中,会把同一个 userid,不同来源表 ID 的数据进行笛卡尔乘积,进行 join 输出。输出就是 pageid 和 age 的两个字段: <pageid, age>。
详细计算结果如下图所示:
作业二:
根据当周学习情况,完成一篇学习总结
解答
请参考以下脑图:
版权声明: 本文为 InfoQ 作者【一期一会】的原创文章。
原文链接:【http://xie.infoq.cn/article/d16add76a96faa9083ffaf4f3】。文章转载请联系作者。
评论