文章目录

  • 1、SQL语言类型
  • 2、Hive的DDL操作:
  • 2.1、创建表:
  • 2.2、插入数据:
  • 2.3、修改表:
  • 2.4、删除表
  • 2.5 分区
  • 2.6分桶
  • 2.7、总结
  • 3、Hive表的DQL
  • 4、Hive中的内置函数
  • 4.1、字符串处理相关
  • 4.2、JSON字符串解析
  • 4.3、聚合函数
  • 4.4、数据类型转化CAST
  • 5、Hive中的视图和索引
  • 5.1、视图
  • 5.2、索引
  • 6、Hive的日期函数时间函数
  • 6.1、Hive的日期函数
  • 6.2、时间戳和日期格式互转
  • 7、Hive函数01-日期函数时间函数
  • 8、Hive函数02-分析函数(开窗函数、窗口函数)


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语言就行;

hive sql删除表的语句 hive sql 删除行_hive sql删除表的语句

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、聚合函数

hive sql删除表的语句 hive sql 删除行_hive_02

4.4、数据类型转化CAST

hive sql删除表的语句 hive sql 删除行_hive_03

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进行类型转化;

hive sql删除表的语句 hive sql 删除行_JSON_04


hive sql删除表的语句 hive sql 删除行_Hive_05


hive sql删除表的语句 hive sql 删除行_Hive_06

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

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

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

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

窗口函数