Hive 表常用查询语句-总结
Hive之前不常用,每次都是现用现查,就是现在总结记下笔记,边学边记(下面都是一些简单的例子,由易到难吗)>_<。
1、基本的查询语句
现在假设有数据库 db
,数据表table1
,table2
,
--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 | 先聚合在排序,或者先分组在排序(同上) |
------
|
------
|
------
|
注意: 关键字 asc
和 desc
表示升序和降序,其中 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 表常用查询语句-总结相关推荐
- Hive表联合查询语句参考
hive语句不是很熟悉,对表联合这个基本的都要找半天资料,这里写下,作为以后的参考: select a.time_stamp,a.acc_nbr,b.bts_name from (select * f ...
- hive的条件查询语句_[一起学Hive]之九-Hive的查询语句SELECT
关键字:Hive SELECT.ORDER BY.SORT BY.DISTRIBUTE BY.CLUSTER BY.Hive子查询.Hive虚拟列 八.Hive的查询语句SELECT 在所有的数据库系 ...
- Mongodb常用查询语句_笔记
目录 前言 一.Mongodb简介 二.Mongodb常用查询语句 总结 前言 工作中会使用到Mongodb数据库,这是一个非关系型数据库,所以它的一些查询语句跟sql会不太一样,一时半会不能马上写出 ...
- pg表常用sql语句
大家好呀,我是柚子,这篇主要介绍了pg表常用sql语句~o( ̄▽ ̄)ブ 文章目录 举例 一.创建表 二.删除表 三.增加表字段 四.修改表字段名称和类型长度 五.删除表字段 六.修改字段的备注 七.建 ...
- hive 如何将数组转成字符串_hive 将hive表数据查询出来转为json对象和json数组输出...
1.将hive表数据查询出来转为json对象输出apache 一.将查询出来的数据转为一行一行,并指定分割符的数据json 二.使用UDF函数,将每一行数据做为string传入UDF函数中转换为jso ...
- Hive表分区查询show partitions tablename
Hive表分区查询show partitions tablename Spark Sql: %sql show partitions grainfo;
- MongoDB 查询语法与常用查询语句总结
MongoDB 常用查询语句总结 先来一波查询语句语法的基本解释: 列子: db.mycol.find({"likes": {$gt:10}, $or: [{"by&qu ...
- SQL常用查询语句汇总
SQL查询关键字为SELECT,常用查询语句代码及结果如下(本文使用MySQL数据库管理系统): -- 1检索单个列 SELECT prod_name FROM Products;-- 2检索多个列 ...
- mysql中多表联合查询语句_mysql中的多表联合查询语句是什么
mysql中的多表联合查询语句是:[select 语句1 union [union 选项] select 语句2 union [union 选项] select 语句n].多表联合查询结果是将多个se ...
最新文章
- NVIDIA CUDA-X AI
- Spring中WebApplicationContext
- Mosquitto配置----日志设置
- PHP:第五章——字符串输出函数
- 微软面试题1、把二元查找树转变成排序的双向链表
- android中Adapter适配器的讲解
- Git 标签(tag)相关操作
- 登录界面html源代码_网页制作:一个简易美观的登录界面
- 购物中心节假日如何统计客流量分析客流量数据?
- php 问卷调查,使用php问卷调查结果统计
- 简述计算机硬件,简述计算机硬件的组成部分
- 机器学习项目(五) 电影推荐系统(二)
- 第 l 个数到第 r 个数的和
- Unity矩阵乘法的区别
- python3解两数之和
- weexpack 的 Login.vue 及 vue 的 Login.vue
- Azure IoT设备到云发送消息和CLI查看
- Excel,sumproduct()函数怎么用
- Ubuntu下如何录制gif动态图
- npm 内部机制的理解
热门文章
- java集成企业微信完成授权登录
- python数组中最大元素_Python获取numpy数组中最大的5个元素(保持原顺序)
- 通俗易懂解释IP段192.168.1.0/24和192.168.0.0/16
- n个不同元素进栈,求出栈元素不同排列的个数
- css 选择器 如何 选择 大于 N 的情况 ?第n个元素之后的情况
- 暴风影音2007全功能完美版和Symantec Norton的冲突 1
- hibernate学习笔记(总结)
- Gbase存储过程详细教程
- HTTP响应头使用X-Content-Options、X-XSS-Protection、X-Frame-Options
- 自然语言处理(七):AG_NEWS新闻分类任务(TORCHTEXT)