Hadoop完成join的有几种要领?「大数据口试题」

2022-11-16 16:49:56 作者:渐行渐远渐陌生
导读:Hadoop实现join的有几种方法?「大数据面试题」,问题分析本题主要是考察学员对mapreduce的熟悉程度核心答案讲解(1)reduce side joinreduce side join是一种最简单的join方式,其主要...
50个大数据面试题第三篇 10个大数据Hadoop面试问题

题目阐发

本题重要是观察学员对mapreduce的熟习水平

Hadoop Hive创建外部表及多表join操作

焦点答案解说

(1)reduce side join

reduce side join是一种最简洁的join方法,其重要头脑如下:
在map阶段,map函数同时读取两个文件File1和File2,为了区分两种泉源的key/value数据对,对每条数据打一个标签 (tag),好比:tag=0表现来自文件File1,tag=2表现来自文件File2。即:map阶段的重要使命是对差别文件中的数据打标签。
在reduce阶段,reduce函数猎取key雷同的来自File1和File2文件的value list, 然后对付统一个key,对File1和File2中的数据举行join(笛卡尔乘积)。即:reduce阶段举行现实的毗连操纵。

(2)map side join

之以是存在reduce side join,是由于在map阶段不克不及猎取全部必要的join字段,即:统一个key对应的字段大概位于差别map中。Reduce side join黑白常低效的,由于shuffle阶段要举行大量的数据传输。
Map side join是针对以了局景举行的优化:两个待毗连表中,有一个表非常大,而另一个表非常小,以至于小表可以直接存放到内存中。如许,我们可以将小表复制多 份,让每个map task内存中存在一份(好比存放到hash table中),然后只扫描大表:对付大表中的每一条记载key/value,在hash table中查找是否有雷同的key的记载,假如有,则毗连后输出即可。

(3)SemiJoin

SemiJoin,也叫半毗连,是从漫衍式数据库中鉴戒过来的要领。它的孕育发生动机是:对付reduce side join,跨呆板的数据传输量非常大,这成了join操纵的一个瓶颈,假如可以或许在map端过滤失不会到场join操纵的数据,则可以大大节约网络IO。
实现要领很简洁:拔取一个小表,假设是File1,将其参加join的key抽取出来,储存到文件File3中,File3文件普通很小,可以放到 内存中。在map阶段,利用DistributedCache将File3复制到各个TaskTracker上,然后将File2中不在File3中的 key对应的记载过滤失,剩下的reduce阶段的事情与reduce side join雷同。

题目扩展

map的join是将一个数据集的数据放入Map聚集中,将聚集在setup放入到缓存中,以是涉及DistributedCache,由于涉及在内存,以是放入缓存的数据集样本要小,不然不实用,以是这个营业场景比力少。
reduce的join将必要join的数据集都作为map的输入,在map的规律中对数据举行标志,reduce中对数据举行归并,必要自界说数据范例

Apache Spark Join 处理流程分析 大数据 Hadoop技术博文 CSDN博客
精彩图集