极客时间《架构师训练营》第十二周课后作业
极客时间《架构师训练营》第十二周课后作业 第一题
在你所在的公司(行业,领域)内,正在用大数据处理哪些业务?可以用大数据实现哪些价值?我是做招聘软件的,说实在我们厂根本就没有大数据 。但是在这个领域里,我还是听说过一些使用场景,这里就道听途说列举一二:
- 整合招聘渠道
通过大数据算法将企业自有库、猎头简历库、人脉简历库等等进行整合,实现多渠道简历搜索、筛选、标识。
- 智能推荐
企业 HR 主动搜索人才常常要花费较大的时间和精力。通过大数据算法和人工智能技术,可以实现算法主动推荐候选人,直接提高 HR 招聘效率及候选人面试成功概率。
- 管理流程智能化
企业在发展的各个阶段都需要适配新的招聘模式,大数据算法根据全渠道信息,向企业主提供最佳人力资源管理流程,打通各地区、各部门、甚至是各个环节的信息通路。
- 为人才决策提供重要价值
通过对人力资源管理中各个行为数据和考评结果的学习,形成一套新人的岗位素质模型,为 HR 挑选适合企业各个发展阶段的人才提供重要参考。还可以根据行业动态、市场状况分析职工离职意向,帮助 HR 快速制定下一年的招聘计划。
分析如下 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 Map 函数
首先,我们看到该题中 page_view & user 两表的 JOIN 操作是通过 userid 关联的,所以 Map 操作必然是以 userid 为 key 值输出:
- page_view 表
pageid userid 1 111 2 111 1 222 - page_view 表关联的 Map 函数:
map(key: Offset, value: LineOfPageView, ...)
- key 是 value 所在行的偏移量,一般可以不管
- value 是 page_view 表中某一行的文本内容,这里可以通过分词器提取出
pageid
和userid
等信息
- map 函数输出格式:
{key: UserId, value:
}
- key 就是 userid 的值
- value 是一个键值对,键是表编号(我这里用
pv
缩写示意一下),值就是 pageid
key: UserId value: 111 111 222
- page_view 表关联的 Map 函数:
- user 表
userid age 111 25 222 32 - 该表关联的 Map 函数是
map(key: Offset, value: LineOfUser, ...)
,几乎和上表一样:
- key 是偏移量
- value 是表中某一行的文本内容,通过分词器可以提取出
userid
和age
等信息
- map 函数输出格式:
{key: UserId, value:
}
- key 就是 userid
- value 也是一个键值对,键也是表编号(用
u
缩写示意),值就是 age
key: UserId age: 111 222
- 该表关联的 Map 函数是
Shuffle 会将上述 Map 输出结构按 Key 值(userid)排序以及合并,会生成如下两张表的内容再交给不同的 Reduce 服务计算:
key: UserId | value: |
---|---|
111 | |
111 | |
111 |
key: UserId | value: |
---|---|
222 | |
222 |
- 输入就是上面 Shuffle 的输出:
reduce(Key: UserId, values:
[], ...)
- key 就是 UserId
- values 是一系列键值对(
或是
)的数组
- 输出:
const ages: [] = values.filter((v) => v.key === "u").map((v) => v.value); const pageIds: [] = values.filter((v) => v.key === "pv").map((v) => v.value); return pageIds.flatMap((p) => ages.map((a) => ({ pageid: p, age: a })));
先利用不同的表编号(pv
或u
),从 values 中过滤出 ages 和 pageIds 两个数组;然后对 ages 和 pageId 这两个数组做 combination 操作(两 for 循环啦),得到所有的【极客时间《架构师训练营》第十二周课后作业】
键值对的列表,这个列表就是 Reduce 的输出。最后输出结果如下:
pageid age 1 32 1 25 2 25
推荐阅读
- 慢慢的美丽
- 《真与假的困惑》???|《真与假的困惑》??? ——致良知是一种伟大的力量
- 20170612时间和注意力开销记录
- 《跨界歌手》:亲情永远比爱情更有泪点
- 时间老了
- 诗歌:|诗歌: 《让我们举起世界杯,干了!》
- 期刊|期刊 | 国内核心期刊之(北大核心)
- 《魔法科高中的劣等生》第26卷(Invasion篇)发售
- 人间词话的智慧
- 《一代诗人》37期,生活,江南j,拨动心潭的一泓秋水