大数据--hive4--HiveSQL查询语法总结

本文总结了Hive SQL查询语法的关键点,包括Hive与传统SQL的区别,如不支持行级别增删改和不等值连接,以及Hive的特殊操作如桶或簇、数据分组、collect_list和collect_set的用法。还讨论了SQL的join操作、UNION与UNION ALL的使用,并提到了数据倾斜和优化策略。
摘要由CSDN通过智能技术生成

目录

一:Hive SQL与SQL的区别

二:Hive表关联条件不支持不等值连接

三:桶或者簇

四:group by 数据分组

五:collect_list和collect_set用法

六:根据Hive Sql语句的执行顺序而进行的优化

七:SQL的join操作

八: UNION 和 union all 数据拼接

九:其他


一:Hive SQL与SQL的区别

1)用法上的区别:

  • HQL不支持行级别的增删改,所有数据加载的时候就已经确定,不可更改。
  • 不支持事务
  • 支持分区存储

2)hive的SQL特点:

  • HIve更适合于分析复杂的数据集。SQL更适合于快速分析不太复杂的数据集
  • hive执行时间长
  • 不支持不等值连接(放在下面展开讲,官网表示,hive2.2版本之后支持不等值关联语句)

        一般使用left join , right join , inner join替代

  • 不能职能识别concat(‘;’, key)因为;被当做SQL结束符号
  • HIVE SQL 中String类型的字段若是空字符串,即长度为0,那么对它进行is null的判断,

        其结果是false,我们可以使用left join进行筛选。

  • HIve中不支持‘ <  dt  < ’这种格式的范围查找,可以使用dt in (",")或者between替代

二:Hive表关联条件不支持不等值连接

(官网表示,hive2.2版本之后支持不等值关联语句)

关联时ON里面的条件如果含有不等值,那么在hive中不能直接使用,如果将不等式放在where条件中,

会出问题,直接将不等值放在where条件中会过滤掉主表的部分数据

解决方案:先通过inner join加上非等值条件,再left join.

错误示例:

select t.id , t.date , t1.date
from t
left join t1
on t1.id = t.id
and t.date > t1.date

正确写法: 不等值的连接我们先用inner join, 然后等值的我们使用left join即可。

select t.id, t.date, t2.date
from t
left join
(select t.id,t1.date
from t
inner join t1 on t1.id &
  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值