概述
- hive官网
- 有助于使用SQL读取,写入和管理驻留在分布式存储中的大型数据集(Hadoop的sql 客户端)
- 可以将结构投影到已经存储的数据上(虚拟表,保存结构化数据)
- 提供了命令行工具和JDBC驱动程序以将用户连接到Hive(客户端)
- hive 基于Hadoop的HDFS和Map Reduce。所以继承Hadoop所有特点(非实时查询,不支持修改数据)
- YouTube 数据练习
组成部分
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210423174931193.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDc2MTI2MA==,size_16,color_FFFFFF,t_70#pic_center)
元数据
- Hive选择相应的数据库服务器来存储表,数据库,列的架构或元数据,表格,数据类型和HDFS映射
数据存储 HDFS
执行引擎
- 将Hql编译成MR任务
- 解释器、编译器、优化器完成HQL查询语句从词法分析、语法分析、编译、优化以及查询计划的生成
客户端
HQL语法
DDL
建库
CREATE DATABASE IF NOT EXISTS liubin COMMENT '注释' LOCATION '/user/hive/warehouse';
SHOW DATABASES LIKE 'liu*';
DESC DATABASE EXTENDED liubin;
ALTER DATABASE liubin SET DBPROPERTIES ('createTime'='2021-01-16');
DROP DATABASE liubin CASCADE;
数据结构
|
hive |
Java |
整形 |
INT |
int |
整形 |
BIGINT |
long |
整形 |
STRING |
String |
日期 |
TIMESTAMP |
|
集合(支持嵌套) |
STRUCT(存储对象) |
struct<id:int,name:string> 使用:struct.属性 |
集合(支持嵌套) |
MAP(键值对) |
map<int,string> 使用:map['key'] |
集合(支持嵌套) |
ARRAY(数组) |
array<string> 使用:array[下标] |
建表
SHOW CREATE TABLE test;
ALTER TABLE liubin.test SET TBLPROPERTIES ('EXTERNAL' = 'TRUE');
CREATE [TEMPORARY] [EXTERNAL] TABLE [IF NOT EXISTS] [db_name.]table_name
[(col_name data_type [column_constraint_specification] [COMMENT col_comment], ... [constraint_specification])]
[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_buckets BUCKETS]
[SKEWED BY (col_name, col_name, ...)
ON ((col_value, col_value, ...), (col_value, col_value, ...), ...)
[STORED AS DIRECTORIES]
[
[ROW FORMAT row_format]
[STORED AS file_format]
| STORED BY 'storage.handler.class.name' [WITH SERDEPROPERTIES (...)]
]
[LOCATION hdfs_path]
[TBLPROPERTIES (property_name=property_value, ...)]
[AS select_statement];
CREATE [TEMPORARY] [EXTERNAL] TABLE [IF NOT EXISTS] [db_name.]table_name
LIKE existing_table_or_view_name
[LOCATION hdfs_path];
CREATE TABLE table_name AS SELECT * FROM existing_table_or_view_name;
data_type
: primitive_type
| array_type