第6章 第2节 大数据相关

推荐给朋友

● Spark性能如何调优

参考回答:

避免创建重复的RDD,尽量复用同一RDD,尽量避免使用shuffle类算子,优化数据结构,使用Hive ETL预处理数据,过滤少数导致倾斜的key,提高shuffle操作的并行度,两阶段聚合,将reduce join转为map join。

● map reduce实现笛卡尔乘积

参考回答:

在Map阶段,将来自矩阵A的元素标识成l条<key,value>的形式,key=(i,k),k=1,2,…,l。value=(j,)。将来自矩阵B的元素标识成l条<key,value>的形式,key=(i,k),k=1,2,…,m。value=(j,)。

Shuffle阶段将key相同的value放在相同的列表中

在reduce的时候将key相同来自不同矩阵的value做笛卡儿积

再将结果map成((i,j),value)的形式

Shuffle将key相同的value放在同一列表中

Reduce时key相同的value求和

● 是否写过udf,问udaf,udtf区别和一些细节

参考回答:

udf:user defined function

特点:input:output=1:1

实例函数:md5,split,ltrim

应用场景:1:1的情况,比如md5...

实现方法:简单udf实现

extends UDF

方法名 evaluate

udaf:user defined aggregation function

特点: input:output=n:1

示例函数:sum,count,max,min......

实现方法:extends UDAF,内部静态类实现接口UDAFEvaluator

五大方法:init:初始化map或是reduce需用到的变量

iterate:迭代处理每条数据,true

terminatePartial:相当于mr的combiner

merge:其输入一定是terminatePartial的输出

terminate:处理的是merge的结果

udtf:user defined table function

特点:input:output=1:n

示例函数:explode

实现方法:udf+explode