欢迎来到天天文库
浏览记录
ID:47670931
大小:70.50 KB
页数:3页
时间:2020-01-27
《hive 学习笔记5》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、•如果join中多个表的joinkey是同一个,则join会被转化为单个map/reduce任务LEFT,RIGHT和FULLOUTER•例子•SELECTa.val,b.valFROMaLEFTOUTERJOINbON(a.key=b.key) •如果你想限制join的输出,应该在WHERE子句中写过滤条件——或是在join子句中写••容易混淆的问题是表分区的情况• SELECTc.val,d.valFROMcLEFTOUTERJOINdON(c.key=d.key) WHEREa.ds='2010-07-07'ANDb.ds='2010-
2、07-07‘•如果d表中找不到对应c表的记录,d表的所有列都会列出NULL,包括ds列。也就是说,join会过滤d表中不能找到匹配c表joinkey的所有记录。这样的话,LEFTOUTER就使得查询结果与WHERE子句无关•解决办法•SELECTc.val,d.valFROMcLEFTOUTERJOINd ON(c.key=d.keyANDd.ds='2009-07-07'ANDc.ds='2009-07-07')LEFTSEMIJOIN•LEFTSEMIJOIN的限制是,JOIN子句中右边的表只能在ON子句中设置过滤条件,在WHERE子句、
3、SELECT子句或其他地方过滤都不行••SELECTa.key,a.value FROMa WHEREa.keyin (SELECTb.key FROMB); 可以被重写为: SELECTa.key,a.val FROMaLEFTSEMIJOINbon(a.key=b.key)UNIONALL•用来合并多个select的查询结果,需要保证select中字段须一致•select_statementUNIONALLselect_statementUNIONALLselect_statement...第四部分:从S
4、QL到HiveQL应该转变的几个习惯Hive不支持等值连接•SQL中对两表内联可以写成:•select*fromduala,dualbwherea.key=b.key;•Hive中应为•select*fromdualajoindualbona.key=b.key;
此文档下载收益归作者所有