政务大数据价值及 HiveQL 分析

本文是架构师训练营第 12 周课后作业,主要讨论当前公司使用大数据处理的业务和实现的相关价值,以及根据给定的 HiveQL,分析其生成的MapReduce 程序,Map 和 Reduce 的输入/输出分别是什么。因我当前公司用大数处理政务业务,故浅谈一下政务大数据价值。另外,我目前并不从事大数据的具体业务,本文大部分内容来自于对公司业务的了解,以及从课程学习总结得出。

作业原题

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

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

INSERT OVERWRITE TABLE pv_users 
SELECT pv.pageid, u.age 
FROM page_view pv 
JOIN user u 
ON (pv.userid = u.userid); 

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

Page_view 表和 user 表结构与数据
Page_view 表和 user 表结构与数据

以下是对于作业的解答。

第一题

我目前公司当前正在使用大数据处理政务中环境监测、生产生活、交通状况等业务数据。若要驱动大数据产生价值,那么就要对大数据生命周期进行规划和划分,即:分析规划、标准化、数据采集、数据治理、服务提供、服务获取、持续优化和价值转换八个阶段。政务大数据的生命周期的八个阶段也即是其价值产生、传递和转换的周期过程(如下图示)。

政务大数据生命周期模型
政务大数据生命周期模型

分析规划、标准化和数据采集三个阶段的相互迭代,实现了政务大数据的生成。其中,分析规划和标准化是基础,数据采集是结果。数据仅仅是采集上来、汇总起来并不能很好的发挥其价值,只有在与实际政务业务相结合的过程中,其价值才会体现。政务大数据在政务服务、行政监管和社会治理中的价值涵盖:用数据治理、用数据说话、用数据发展、用数据改进和用数据创新五个方面。

第二题

从 HiveQL 语句可以看出,这个是两个表的Join操作,通过两个表的相同字段userid进行关联,最终得出pageidage关系数据。

首先,Map 函数的输入(key/value),key 是偏移量(不重要)。value 是一行记录。本题有page_viewuser两个表,value 则是每一行的 <userid,pageid><userid,age>,即:

KEYVALUE
偏移量<111,1>
偏移量<111,2>
偏移量<222,1>
KEYVALUE
偏移量<111,25>
偏移量<222,32>

Map 的输出(key/value)是什么呢?对于表page_view,输出的 key 是 userid,value 是由二元组构成,第 1 个元素表示 value 来源的表编号,第 2 个元素是 pageid。对于表user,输出的 key 仍然是 userid,value 也是由二元组构成,第 1 个元素表示 value 来源的表编号,第 2 个元素是 age。

mapreduce-map 输出
mapreduce-map 输出

故 Map 函数最终输出也是 key/value,key 是 userid,value 是<表编号,pageid><表编号,age>

KEYVALUE
111<1,1>
111<1,2>
222<1,1>
111<2,25>
222<2,32>

然后,再看看 Reduce 的输入。Reduce 函数输入是key/values, 从 Map 的输出(如上图示)演化而来。key 是 userid,values 是将相同的 key 进行分组合并的 value 列表,如下结果。

KEYVALUES
111<1,1><1,2><2,5>
222<1,1><2,32>

那么 Reduce 的输出是什么呢?其输出就是对于相同 key 的每组 value 中,表编号为 1 的 value 元组的第 2 个元素,与其它表编号为 2 的 value 元组的第 2 个元素,进行循环结合的值(此处是否可以称为笛卡尔乘积?)。

pageidage
125
225
132

上述文字描述比较抽象,可参考如下图示 Map/Reduce 输入/输出详细过程。

mapreduce 输入输出过程
Map/Reduce 输入输出过程

参考资料:

《政务大数据价值及 HiveQL 分析》的相关评论

发表评论

必填项已用 * 标记,邮箱地址不会被公开。