Hive SQL常用语法总结

  Hive是一个数据仓库基础的应用工具,在Hadoop中用来处理结构化数据,通过类SQL语言对数据进行操作。Hive将sql语句通过解析器转换成MapReduce作业提交到Hadoop集群上,Hadoop监控作业执行过程,并将执行结果返回给用户。

  值得注意的是,Hive并不支持行级数据的更新,主要使用场合为大数据集的批处理作业中。

  下面为Hive中常用的SQL语句,‘[ ]’中的内容根据实际需求来确定要不要写。

-- 创建数据库
create database name;

-- 常用显示命令
show databases; -- 查看有哪些数据库
show tables;  -- 查看当前数据库下有哪些表
show tables like '*cc*'  -- 正则表达式显示表
show partitions;  -- 查看分区
show functions;
describe extended table_name;    -- 查看表的结构,字段,分区等情况

-- 建表语句
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], col_name_2 data_type_2, ...)] -- 指定分区,要注意分区字段不能出现的建表的字段中
[clustered by (col_name, col_name_2, ...)] [sorted by (col_name [ASC|DESC], ...)] into num_buckets buckets] -- 分桶
[row format row_format]
[stored as file_format]  -- 指定存储文件类型
[location hdfs_path]  -- 存储路径

·external 表示创建的表是否为外部表,默认为内部表
·if not exists 表示该表不存在时创建该表,否则忽略异常
·comment 为表、字段增加注释
·row_format
    row format delimited [fields terminated by char]
                         [collection items terminated by char]
                         [map keys terminated by char]
                         [lines terminated by char]
·file_format
   stored as textfile  -- 纯文本数据
   stored as sequencefile  -- 数据需要压缩,节省存储空间

-- like关键字复制表结构
create table table_name like old_table_name;         

-- 更改表名
alter table table_name rename to new_table_name;

-- 增加一个字段 并 添加注释
alter table table_name add columns (col_name data_type comment 'col_comment');

-- 删除列
alter table table_name replace columns (col_name data_type, col_name_2 data_type_2);

-- 增加、删除分区
alter table table_name add [if not exists] partition_name;  -- 增加
alter table table_name drop partition_name, partition_name_2;   -- 删除

 

-- 插入数据
insert into table_1 select * from table_2;  -- 在table_1后追加数据
insert overwrite table_1 select * from table_2;  -- 先将table_1中数据清空,然后添加数据

-- 提取数据常用语句
select [distinct] select_expr_1, select_expr_2
from table_name
[where condition]   -- 筛选条件
[group by col_list [having condition]]  -- 分组、分组返回的条件
[order by col_list]  -- 排序
[limit num_1, num_2]   -- 返回数据的起始位置(num_1)以及返回数据的记录数(num_2)

 

posted @ 2019-08-25 20:55  beyondChan  阅读(4377)  评论(0编辑  收藏  举报