写点什么

架构训练营第十二周作业

用户头像
一期一会
关注
发布于: 2021 年 01 月 10 日

作业一:

第一题


在你所在的公司(行业、领域),正在用大数据处理哪些业务?可以用大数据实现哪些价值?


解答

我所在的公司正好是为电信,金融行业的企业提供大数据解决方案和服务的公司。目前业务主要和中国联通,中国移动进行合作。既包括了批处理范围的数据挖掘,数据分析;也包括了流处理范围的实时数据处理。


例如我正在做的一个联通的“自然人”项目,就是一个大数据的批流混合项目。批处理方面,项目收集全国各省三户数据,统一存储到分布式数据库中,按照用户的证件信息,把用户的全国信息统一到一起进行数据挖掘,数据分析。

流处理方面,支撑了联通的“一证五户”系统,实时计算一个证件(即一个人)是否开户(并且仍然在使用中)超过 5 户。如果超过则按照工信部要求,不能再予新开户。


电信运营商的全国数据的特点具有大数据的特点,数据总量大,且单位时间数据增量也比较大。利用大数据技术,可以实现以前传统数据库无法实现的全国统一数据(即海量数据)的挖掘和分析;而且基于全国统一数据的基础,可以进一步依靠流计算框架,实时支撑一些如“一证五户”的业务。

第二题


分析如下 HiveQL,生成的 MapReduce 执行程序,map 函数输入是什么?输出是什么,reduce 函数输入是什么?输出是什么?


INSERT OVERWRITE TABLE pv_usersSELECT pv.pageid, u.ageFROM page_view pv   JOIN user u   ON (pv.userid = u.userid);
复制代码

page_view 表和 user 表结构与数据示例如下


解答

  1. Hive 在解析 Join 操作时,首先会针对每个表生成一组 map。两组 map 函数的输入 key 为行偏移量,输入 value 为行数据: map(key: Offset, value: LineOfTable, ...)

  2. 由于之后要进行两个 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>}。

  3. shuffle sort 阶段,同一个 userid 的值会放到以前,这里会把含有不同的来源表 ID 的数据组合到一起。

  4. reduce 函数的输入即第三步 shuffle sort 的输出 reduce(Key: UserId, values: <TableId, AgeOrPageId>[], ...)。reduce 函数过程中,会把同一个 userid,不同来源表 ID 的数据进行笛卡尔乘积,进行 join 输出。输出就是 pageid 和 age 的两个字段: <pageid, age>。


详细计算结果如下图所示:


作业二:

  • 根据当周学习情况,完成一篇学习总结


解答

请参考以下脑图:


大数据原理


HDFS


MapReduce


Hive


发布于: 2021 年 01 月 10 日阅读数: 71
用户头像

一期一会

关注

还未添加个人签名 2018.01.08 加入

还未添加个人简介

评论

发布
暂无评论
架构训练营第十二周作业