Hive(下)

一个InputSplit输入到map,会运行我们实现的Mapper的处理逻辑,对数据进行映射操作。
map输出时,会首先将输出中间结果写入到map自带的buffer中(buffer默认大小为100M,可以通过io.sort.mb配置)。
map自带的buffer使用容量达到一定限制(默认0.80或80%,可以通过io.sort.spill.percent配置),一个后台线程会准备将buffer中的数据写入到磁盘。
这个后台线程在将buffer中数据写入磁盘之前,会首先将buffer中的数据进行partition(分区,partition数为Reducer的个数),对于每个的数据会基于Key进行一个in-memory排序。
排序后,会检查是否配置了Combiner,如如果配置了则直接作用到已排序的每个partition的数据上,对map输出进行化简压缩(这样写入磁盘的数据量就会减少,降低I/O操作开销)。

这里写图片描述

hive的各种join
1、左连接 left outer join
以左边表为准,逐条去右边表找相同字段,如果有多条会依次列出
2、右连接 left outer join
以左边表为准,逐条去右边表找相同字段,如果有多条会依次列出
3、内连接inner join
找出左右相同同的记录
4、全连接 full outer join
包括两个表的join结果,左边在右边中没找到的结果(NULL),
右边在左边没找到的结果(NULL)

阅读更多
换一批

没有更多推荐了,返回首页