hive sql注意事项

如果是按时间分区的表,查询时一定要使用分区限制,如果没有分区限制,会从该表的所有数据里面遍历。

注意sql中or的使用,or 这个逻辑必须单独括起来,否则可能引起无分区限制,下面举个例子,想查询到的是gd或gx的某天的数据。
Select x from t where ds=d1 and province=’gd’ or province=’gx’
该语句会从所有的分区里面查询!也没有得到自己想要的数据!这里的意思是某天gd的或者所有日期里面gx的数据 ,正确的写法是:
Select x from t where ds=d1 and (province=’gd’ or province=’gx’)

很容易出错的地方
1、 只支持等值连接,不支持非等值连接 join的时候不等值
2、 内连接时小表放前面,大表放后面 a Join b on a.x=b.x a为小表
3、 连接小表时使用map join 条件
SELECT /+ MAPJOIN(b) / a.key, a.value FROM a join b on a.key = b.key
l 小表可以放进内存(维度表、行数<2w 为宜)
l 小表不能为驱动表 (eg:left outer join 时的左表)
4、 Full outer join 在on中过滤分区有问题,解决方法是将分区过滤条件放到左表和右表子查询里面
比如:
Select a.x,b.x from a full|left|right outer join b on (a.key=b.key and a.ds=d1 and b.ds=d1)
应该写成
Select t1.x ,t2.x from (select * from a where ds=d1) t1
full outer join
(select * from b where ds=d1) t2 on t1.key=t2.key

5、 Left|right outer join 将驱动表(left outer join的左表或者right outer join的右表)的分区过滤放在on会有问题,解决方法是将驱动表的过滤条件放到where或者子查询里面
比如:
Select a.x,b.x from a left outer join b on (a.key=b.key and a.ds=d1 and b.ds=d1)
应该写成
Select a.x ,b.x from a
left outer join b on a.key=b.key and b. ds=d1 and b.x=y
where a.ds=d1
或者
Select t1.x ,t2.x from (select * from a where ds=d1) t1
Left outer join b t2 on t1.key=t2.key and t2.ds=d1

6、 支持多表连接,语法:
SELECT a.val, b.val, c.val FROM a JOIN b ON (a.key = b.key1) JOIN c ON (c.key = b.key2)
下面写法错误:
SELECT a.val, b.val, c.val FROM a JOIN b JOIN c ON (a.key = b.key1 and c.key = b.key2)

7、 内连接注意事项
要使用 a join b on a.key=b.key,
下面写法在mysql/oracle等价于内连接,但是在Hive中会导致笛卡尔积,会跑不出来的
From a ,b where a.key=b.key

8、 join的两个表中有一个表应该是distinct的,但如果实际的数据并非distinct的,这个时候应该做一次select distinct放到子查询,再join

9.hive sql中匹配 ‘\’,竟然用四个,如:channel not like ‘%\\\\’
10.设置执行sql的内存:
set mapreduce.map.memory.mb=8192;
set mapred.map.child.java.opts=-Xmx7792m;
set mapreduce.reduce.memory.mb=8192;
set mapred.reduce.child.java.opts=-Xmx7792m;

OA源代码C#漂亮通用OA企业办公系统 OA人事办公软件asp.net源码1、开发环境为Visual Studio 2012,数据库为SQLServer2008或以上版本,使用.net 4.0+开发。2、管理员登陆名为:admin 密码:admin3、默认数据库连接字符串在webconfig配置文件中修改4、修改版为数据库请使用【备份数据库文件】中.bak文件还原即可1、包含常用办公所有功能(财务,档案,人力资源,审批,会议,文件,业务等功能);2、多年的技术积累和大量用户需求的汇总调整,保证了系统的安全性稳定性、易操作、管理维护简单的特点;3、系统设计开发的规范性与全面性,利于系统的实现、测试、维护、版本升级等。开发人员既可全面了解OA系统所涉及的业务,也能对本身技术提升有所助益,同时减轻了团队开发压力,节约了开发成本;4、采用B/S架构,用户通过浏览器即能进行联网访问办公。功能介绍1、个人办公a、内部邮件b、Internet邮件c、通讯薄d、个人设置2、审批流程a、审批流程b、流程设置c、印章管理3、公文收发a、公文收发4、工作管理a、工作管理5、下属任务a、下属任务6、知识文档a、知识文档7、扩展应用a、资产管理b、培训记录c、会议管理d、车辆管理e、图书管理f、档案卷库g、考试管理h、学习管理8、客户关系a、会员管理b、我的客户c、客户管理9、进销存类a、产品管理b、销售管理c、采购管理d、供应商管理e、财务模块10、项目管理a、项目管理11、人力资源a、考勤管理12、报表中心a、报表中心13、信息交流a、信息交流14、组织机构a、组织机构15、附件程序a、附件程序16、系统管理a、系统管理
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值