1. 命令
# 表
# 创建
CREATE [EXTERNAL] TABLE [IF NOT EXISTS] table_name
[ (col_name data_type [COMMENT col_comment], ...) ]
[COMMENT table_comment]
[PARTITIONED BY(col_name data_type [COMMENT col_comment],...) ]
[CLUSTERED BY (col_name,col_name,...)]
[SORTED BY(col_name [ASC|DESC],...)] INTO num_buckers BUCKETS]
[ROW FORMAT row_format]
[STORED AS file_format]
[FIELDS TERMINATED BY] --设置字段与字段之间的分隔符
[COLLECTION ITEMS TERMINATED BY] --设置一个复杂类型(array,struct)字段的各个item之间的分隔符
[MAP KEYS TERMINATED BY] -- 设置一个复杂类型(Map)字段的key value之间的分隔符
[LINES TERMINATED BY] -- 设置行与行之间的分隔符
[LOCATION hdfs_path]
# 查
# 查看指定库内的所有表
show tables in database_name;
# 描述表的字段信息
describe employee;
# 显示所创建表的扩展信息
describe extended employee;
# 最全面的信息查看方式,能够显示出最多的信息
describe formatted employee;
# 查看表创建脚本
show create table employee ;
# 展示分区
show partitions employee;
# 改
# 更改表名称
alter table employee to employee1;
# 新增字段
alter table employee add columns(user_id string);
# 修改注释
alter table employee change column user_id users_id string COMMENT'用户id';
# 删
# 删除库
drop database if exists db_name;
# 删除表
drop table if exists employee;
# 清空表
truncate table employee;
insert overwrite table employee select * from employee where 1=0;
# 删除分区
alter table employee_table drop partition (pt>='2022-01-01')
# 加载数据
load data local inpath '/data/hive_temp_data/tmp_20200722_reply.TXT' into table default.tmp_20200722_reply
# 日期
# 函数
# 后n天 n可为负数
date_add(date,n)
# 前n天 n可为负数
date_sub(date,n)
# 后n月 n可为负数
add_months(date,m)
# 日期差,前面减后面
datediff(date,date1)
# 常用
# 指定格式的转换
from_unixtime(unix_timestamp('20211201','yyyymmdd'),'yyyy-mm-dd')
# 当前日期
current_date()
# 当前周
weekofyear(current_date())
# 月初
trunc(current_date(),'MM')
# 月末
last_day(current_date())
# 年初
trunc(current_date(),'YY')
2.HQL源码流程图
3.Hive SQL的编译过程详解
参考美团技术团队文章: Hive SQL的编译过程