HiveSQL操作

1、SQL语言类型

1)数据定义语言DDL:create、alter、drop
2)数据控制语言DCL:权限控制、grant、revoke
3)数据操作语言DML:insert、update、delect
4)数据查询语言DQL:select子句;

2、Hive的DDL操作:

2.1、创建表:

create [external] table [if not exists] table_name (
col_name data_type [comment '字段描述信息']
col_name data_type [comment '字段描述信息'])
[comment '表的描述信息']
[partitioned by (col_name data_type,...)] --分区
[clustered by (col_name,col_name,...)] --分桶
[sorted by (col_name [asc|desc],...) into num_buckets buckets] --指定排序规则
[row format row_format] --指定表文件字段分隔符
[storted as ....]  --存储格式常用的是:SEQUENCEFILE, TEXTFILE, RCFILE
[location '指定表的路径'] 

2.2、插入数据:

LOAD DATA [LOCAL] INPATH 'filepath' [OVERWRITE] INTO TABLE tablename 
[PARTITION (partcol1=val1, partcol2=val2 ...)]

2.3、修改表:

ALTER TABLE name RENAME TO new_name
ALTER TABLE name ADD COLUMNS (col_spec[, col_spec ...])
ALTER TABLE name DROP [COLUMN] column_name
ALTER TABLE name CHANGE column_name new_name new_type
ALTER TABLE name REPLACE COLUMNS (col_spec[, col_spec ...])

2.4、删除表

DROP TABLE [IF EXISTS] table_name;

2.5 分区

1)添加分区:

ALTER TABLE table_name ADD [IF NOT EXISTS] PARTITION partition_spec
[LOCATION 'location1'] partition_spec [LOCATION 'location2'] ...;

partition_spec:
: (p_column = p_col_value, p_column = p_col_value, ...)

2)重命名分区:

ALTER TABLE table_name PARTITION partition_spec RENAME TO PARTITION partition_spec;

3)删除分区

ALTER TABLE table_name DROP [IF EXISTS] PARTITION partition_spec, PARTITION partition_spec,...;

4)动态分区

hive.exec.dynamic.partition=true; 是否允许动态分区
hive.exec.dynamic.partition.mode=strict/nostrict; 动态区模式为严格模式
hive.exec.max.dynamic.partitions=1000; 允许最大的动态分区
hive.exec.max.dynamic.partitions.pernode=100; 单个节点允许最大分区

2.6分桶

2.7、总结

所以关于Hive表的DDL语言,使用JDBC程序如下,只需要将stmt.executeQuery()中传入数据DDL语言就行;

在这里插入图片描述

3、Hive表的DQL

SELECT [ALL | DISTINCT] select_expr, select_expr, ... 
FROM table_reference 
[WHERE where_condition] 
[GROUP BY col_list] 
[HAVING having_condition] 
[ORDER BY col_list]] 
[LIMIT number];  --查询部分的语法就和前面SQL的语法相差不大;

4、Hive中的内置函数

4.1、字符串处理相关

签名功能描述
concat(String a,string b…)返回ab字符换拼接后的结果
substr(String A,int start)从start开始知道结束
upper(String A)返回所有字符的大写字符串

4.2、JSON字符串解析

签名功能描述
get_json_object(string json_string, string path)提取从基于指定的JSON路径的JSON字符串JSON对象,并返回提取的JSON字符串的JSON对象。如果输入的JSON字符串无效,返回NULL。

4.3、聚合函数

在这里插入图片描述

4.4、数据类型转化CAST

在这里插入图片描述

5、Hive中的视图和索引

5.1、视图

hive> CREATE VIEW emp_30000 AS
   > SELECT * FROM employee
   > WHERE salary>30000;
--删除视图:
DROP VIEW view_name

5.2、索引

CREATE INDEX index_name
ON TABLE base_table_name (col_name, ...)
AS 'index.handler.class.name'
[WITH DEFERRED REBUILD]
[IDXPROPERTIES (property_name=property_value, ...)]
[IN TABLE index_table_name]
[PARTITIONED BY (col_name, ...)]
[
   [ ROW FORMAT ...] STORED AS ...
   | STORED BY ...
]
[LOCATION hdfs_path]
[TBLPROPERTIES (...)]

--比如一个例子:
hive> CREATE INDEX inedx_salary ON TABLE employee(salary)
   > AS 'org.apache.hadoop.hive.ql.index.compact.CompactIndexHandler';

--删除一个索引:
DROP INDEX <index_name> ON <table_name>

6、Hive的日期函数时间函数

6.1、Hive的日期函数

在Hive中可以用String,Date和TimeStamp表示日期时间,String 用 yyyy-MM-dd 的形式表示,Date 用 yyyy-MM-dd 的形式表示,Timestamp 用 yyyy-MM-dd hh:mm:ss 的形式表示。在Join的时候String与Date、TImeStamp表达的时间相同时可以直接比较,但是Date和TimeStamp之间不能直接比较,需要用cast进行类型转化;
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

6.2、时间戳和日期格式互转

这个日志关于时间和日期总结的巨好

7、Hive函数01-日期函数时间函数

8、Hive函数02-分析函数(开窗函数、窗口函数)

窗口函数

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值