架构师训练营第12周作业 大数据 MapReduce

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

我目前在影视后期行业,公司日常的生产中暂时还没有使用到大数据技术,但是整个影视行业对大数据的应用其实是充满着需求和机会的。

在前期创作阶段,大数据可以用于统计、分析过往影视作品的市场反响、评价、成本、周期、风险等等,辅助出品方制定更符合市场规律、更满足观众胃口的影视作品创作方向和生产方案。借助机器学习、文本分析、图像生成等技术,目前已经出现了自动分析剧本,自动绘制故事板等应用。

在制作阶段,大数据的应用主要在于深度学习。基于深度学习和神经网络的图像处理技术可以极大提高数字图像的生产效率和质量,提升数字图像产品的品质,取代一部分基础的人力投入。另外,对于影视制作这种强调个性化和人力投入的领域,对于由经验和创意沉淀而成的方法论进行数据化的抽象、统计、分析,能够更好的指导整个创作过程,对行业知识的挖掘、生产过程的监控管理都具有重要意义。

在发行阶段,大数据同样可以指导影片的排期和宣发策略。

分析如下 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);

本例所给出的SQL语句是要从page_view表和user表中查询出每次页面访问所对应的访问者年龄。根据MapReduce背后基本的“分治-合并”思想,结合具体的数据表结构,可以得出Map和Reduce过程各自的输入和输出。

Map
Map的输入就是两张表中的每条数据。Map函数的输出中需要选择一个Key,题目中JOIN操作针对的是两张表都有的userid字段,因此可以使用userid作为Key,而value则是一个元组,其第一项是该条数据来源的表编号,第二项则是该表中该条数据值,对于page_view表来说,数据值选择pageid字段,而对于user表来说,数据值选择age字段,这正好对应了SQL语句中的SELECT。

Reduce
在Map的输出结果进入到Reduce过程之前,还需要经过Shuffle处理,即将相同Key的数据集合到一起,以此作为Reduce的输入。在Reduce阶段,对相同Key的数据记录执行JOIN操作,此时计算量就比初始阶段直接对两张原始的表进行JOIN操作要小多了。Reduce的输出结果即是最终的pv_users表,其字段包括pageid和age。

整个MapReduce处理过程如下图所示:


你可能感兴趣的:(架构师训练营第12周作业 大数据 MapReduce)