A表1亿条记录
B表1亿条记录,
A表B表通过id字段关联,直接关联报错,跑不动任务;
现在对A B表分别进行分桶,然后进行关联:
主要用了hive的分桶原理,具体操作如下:
A数据重新抽到一张分桶表a_bucket,分桶是针对某一列进行桶的组织。Hive采用对列值哈希,然后除以桶的个数求余的方式决定该条记录存放在哪个桶当中。在本例中是根据id分成100个桶;
B也根据id分成100个桶;
A分桶表和B分桶表关联生成新的表a_b_detail,因为是分桶表,关联的时候相当于将整个表切分成100个小任务进行关联,传统的方式直接关联会直接卡死,分桶后再关联比较高效,耗时225s,这里面用到的关联叫做SMB(Sort-Merge-Buket) Join,具体可自行百度