Hive之前不常用,每次都是现用现查,就是现在总结记下笔记,边学边记(下面都是一些简单的例子,由易到难吗)>_<。

1、基本的查询语句

现在假设有数据库 db,数据表table1table2

--1、查看表的创建信息:
show create table db.table1;--2、查看表的分区信息:
show partitions db.table1;--3、查看表的记录数:
select count(*) from db.table1 where dt = '2019-03-21';--4、简单连接操作:
select t1.userid, t1.name, t2.score from
(select userid, name from db.table1 where dt = '2019-03-21' ) t1
left join
(select userid, score from db.table2 where dt='2019-03-21') t2
on t1.userid=t2.userid;--5、给字段起别名:
select userid as user_id from db.table1 where dt = '2019-03-19' ;--6、求两个表的差集,出在表A中,但不能出现表B中,即 A-B:
select a.user_id from (select user_id from db.table1) aleft outer join(select user_id from db.table2) bon a.user_id = b.user_id
where b.user_id is null ;--7、条件查找 -- 模糊匹配 单一条件
例如 字段 text 查询包含 'BeiJing' 的列
where text like concat('%','BeiJing','%')
where text like '%BeiJing%'  -- 有待测试--8、条件查找 -- 模糊匹配 多条件 查询
例如 字段 text 查询包含 'BeiJing' 'ShangHai' 的列
where text regexp 'BeiJing|ShangHai'

2、hive的排序相关查询

1. 基本的排序操作
语句 功能 优点 缺点 备注
order by 与其他SQL一样,全局有序 保证全局有序 大数据下,会比较耗时 ------
sort by 在reduce阶段进行排序 在reduce阶段进行排序,比较快 不能保证全局有序,除非只有一个reduce 使用sort by 之后,在进行全局排序会比较快
distribute by和sort by 联合使用 先聚合在排序,或者先分组在排序 ------ ------ ------
cluster by 先聚合在排序,或者先分组在排序(同上) ------ ------ ------

注意: 关键字 ascdesc 表示升序降序,其中 cluster by 指定的列只能降序
使用示例

-- 1、 对单个字段,降序排序(如果是多个字段,就继续在后面追加即可)-- 按照年龄降序排序, sort by 使用方法与order by 一样。
select user_id, age from db.table order by age desc;--2、 先按照班级class分组,在按照得分score、年龄age 升序排列
select class, age, score from db.table distribute by class sort by age asc, score asc;--3、 先按照班级class分组,在按照年龄age 排列
select  class, age from db.table cluster by class sort by age;
2. 分组排序实现

一般有两种实现方式:

(1)row_number() over( partition by 分组字段 order by 排序字段) as rank(rank 可随起名,表示排序后标识)
(2)row_number() over( distribute by 分组字段 sort by 排序字段) as rank(rank 可随起名,表示排序后标识)-- 注意:
--1、 partition by  只与 order by 组合使用
--2、 distribute by 只与 sort by 组合使用
--3、 rank,可以随便起的名字,表示排序后的序号,例如,1,2,3,4,5...
--4、 分组字段、排序字段,均可为多个字段。
--5、 分组字段设置为常量,例如为1,这时,仅可以获取按照排列字段,排序后的--序号。

使用示例

--1、选取每个班级成绩前三名的同学:
select class, student, score from (select class, student, score, row_number() over (distribute by class sort by score desc) as rank from db.table1)as t1
where t1.rank < 4;--2、distribute by,后面可以跟常数,例如1,这样只是获取按照某一列排序后的标识:
select class, student, score, row_number() over (distribute by 1 sort by score desc) as rank from db.table1;

参考链接:1基本排序、2分组排序

3. 从全量表数据获取增量数据
select a.id from
(select distinct id from db.table1 where dt='2020-05-27') a
left outer join
(select distinct id from db.table1 where dt='2020-05-26') b
on a.id=b.id
where b.id is null
4. 获取表的最新分区
partition="show partitions db.table1;"
latest_info=$(hive -e  "$partition" | sort | tail -n 1)
latest_dt=${latest_info:3:13}
echo $latest_dt
5. 去重后统计行数
select count(*) from (select distinct id from ab.table where dt='2020-05-26') a
6. Hive SQL 获取 Array<struct>类型字段
# 例如字段 `ads_info` array<struct<ad_price:double, ad_id:bigint>>select p_id, test.ad_price, test.ad_id from 表名 lateral view explode(ads_info) exploded_table as testwhere dt='2023-04-16' and test.ad_price=1.5and test.ad_id=10086group by p_id, test.ad_price, test.ad_id;
7. Hive SQL 解析JSON类型字段
# get_json_object(ads_info, '$.image_url')
持续更新

声明: 总结学习,有问题或不当之处,可以批评指正哦,谢谢。

Hive 表常用查询语句-总结相关推荐

  1. Hive表联合查询语句参考

    hive语句不是很熟悉,对表联合这个基本的都要找半天资料,这里写下,作为以后的参考: select a.time_stamp,a.acc_nbr,b.bts_name from (select * f ...

  2. hive的条件查询语句_[一起学Hive]之九-Hive的查询语句SELECT

    关键字:Hive SELECT.ORDER BY.SORT BY.DISTRIBUTE BY.CLUSTER BY.Hive子查询.Hive虚拟列 八.Hive的查询语句SELECT 在所有的数据库系 ...

  3. Mongodb常用查询语句_笔记

    目录 前言 一.Mongodb简介 二.Mongodb常用查询语句 总结 前言 工作中会使用到Mongodb数据库,这是一个非关系型数据库,所以它的一些查询语句跟sql会不太一样,一时半会不能马上写出 ...

  4. pg表常用sql语句

    大家好呀,我是柚子,这篇主要介绍了pg表常用sql语句~o( ̄▽ ̄)ブ 文章目录 举例 一.创建表 二.删除表 三.增加表字段 四.修改表字段名称和类型长度 五.删除表字段 六.修改字段的备注 七.建 ...

  5. hive 如何将数组转成字符串_hive 将hive表数据查询出来转为json对象和json数组输出...

    1.将hive表数据查询出来转为json对象输出apache 一.将查询出来的数据转为一行一行,并指定分割符的数据json 二.使用UDF函数,将每一行数据做为string传入UDF函数中转换为jso ...

  6. Hive表分区查询show partitions tablename

    Hive表分区查询show partitions tablename Spark Sql: %sql show partitions grainfo;

  7. MongoDB 查询语法与常用查询语句总结

    MongoDB 常用查询语句总结 先来一波查询语句语法的基本解释: 列子: db.mycol.find({"likes": {$gt:10}, $or: [{"by&qu ...

  8. SQL常用查询语句汇总

    SQL查询关键字为SELECT,常用查询语句代码及结果如下(本文使用MySQL数据库管理系统): -- 1检索单个列 SELECT prod_name FROM Products;-- 2检索多个列 ...

  9. mysql中多表联合查询语句_mysql中的多表联合查询语句是什么

    mysql中的多表联合查询语句是:[select 语句1 union [union 选项] select 语句2 union [union 选项] select 语句n].多表联合查询结果是将多个se ...

最新文章

  1. NVIDIA CUDA-X AI
  2. Spring中WebApplicationContext
  3. Mosquitto配置----日志设置
  4. PHP:第五章——字符串输出函数
  5. 微软面试题1、把二元查找树转变成排序的双向链表
  6. android中Adapter适配器的讲解
  7. Git 标签(tag)相关操作
  8. 登录界面html源代码_网页制作:一个简易美观的登录界面
  9. 购物中心节假日如何统计客流量分析客流量数据?
  10. php 问卷调查,使用php问卷调查结果统计
  11. 简述计算机硬件,简述计算机硬件的组成部分
  12. 机器学习项目(五) 电影推荐系统(二)
  13. 第 l 个数到第 r 个数的和
  14. Unity矩阵乘法的区别
  15. python3解两数之和
  16. weexpack 的 Login.vue 及 vue 的 Login.vue
  17. Azure IoT设备到云发送消息和CLI查看
  18. Excel,sumproduct()函数怎么用
  19. Ubuntu下如何录制gif动态图
  20. npm 内部机制的理解

热门文章

  1. java集成企业微信完成授权登录
  2. python数组中最大元素_Python获取numpy数组中最大的5个元素(保持原顺序)
  3. 通俗易懂解释IP段192.168.1.0/24和192.168.0.0/16
  4. n个不同元素进栈,求出栈元素不同排列的个数
  5. css 选择器 如何 选择 大于 N 的情况 ?第n个元素之后的情况
  6. 暴风影音2007全功能完美版和Symantec Norton的冲突 1
  7. hibernate学习笔记(总结)
  8. Gbase存储过程详细教程
  9. HTTP响应头使用X-Content-Options、X-XSS-Protection、X-Frame-Options
  10. 自然语言处理(七):AG_NEWS新闻分类任务(TORCHTEXT)