数据类型
基本数据类型
- 常用的就INT BIGINT DOUBLE STRING可以不区分大小写
集合数据类型
- 建表(insert数据不常用,所以建表的时候加入数据解析的格式),会在hdfs下建立一个目录,load或put数据后分析这个目录下的数据(hive的表与hdfs的目录关联,使hive的表和数据之间建立映射关系)
struct类似java中的对象
row format delimited fields terminated by ‘,’ 列分隔符
collection items terminated by ‘_’ MAP STRUCT 和 ARRAY 的分隔符(数据分割符号)
map keys terminated by ‘:’ MAP中的key与value的分隔符
lines terminated by ‘\n’; 行分隔符 - 插入数据:两种方式load(hive)或put(hadoop)
- 查询
此处再次体现了struct类似java中的对象,通过对象点属性名访问
类型转换
-
DDL
1.创建库
- 建库语法
CREATE DATABASE [IF NOT EXISTS] database_name
[COMMENT database_comment]
[LOCATION hdfs_path]
[WITH DBPROPERTIES (property_name=property_value, ...)];
[]里的都是可选语句,comment是描述信息,location是库所在的目录,with dbproperties:
- 创建库的过程就好比去mysql中建立元数据
2.查看库
- show databases; desc database extended 库名 ;
3.修改库
- alter database mydb set dbproperties(“createtime”=“2022-05-03”,“author”=“ljh”);
4.删除库
- 删除空库drop database mydb1; 删除有表的库drop database mydb cascade ;
创建数据库时,在mysql中成功创建会自动在hdfs创建相关联的目录文件,单方面删除hdfs目录文件mysql中的元数据库信息是不会自动删除的。而单方面删除mysql中元数据库信息hdfs中的关联目录会自动删除
5.创建表
- 建表语法
CREATE [EXTERNAL] TABLE [IF NOT EXISTS] table_name -- EXTERANL: 外部表
[(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_buckets BUCKETS] -- 指定分桶数
[ROW FORMAT delimited fields terminated by ... ] -- 指定一条数据字段与字段的分割符
[collection items terminated by ... ] -- 指定集合元素与元素的分割符
[map keys terminated by ... ] -- 指定map的kv的分割符
[STORED AS file_format] -- 指定文件存储格式,默认为 textfile
[LOCATION hdfs_path] -- 指定表在hdfs中对应的路径
[TBLPROPERTIES (property_name=property_value, ...)] -- 指定表的属性
[AS select_statement] -- 基于某个查询建表
-
指定路径建表与不指定路径(当前在那个数据库中就在那个数据库建表)建表
-
内部表:管理表,默认创建的表就是管理表
-
外部表
-
内部表和外部表的变换
-
内部表和外部表的区别:内部表删表删数据,而外部表删表不删数据。外部表的应用更多
6.查看表
- 各种信息
- 表在mysql中元数据信息
- 三种方式表中插入数据并查看
-
由hive上传本地数据到指定表中
-
由本地上传数据到指定路径下的表中
-
hdfs中已经有数据,建表时之间指定路径,直接映射到指定的数据
-
7.修改表
-
准备
-
表名列名的更改,增加列替换列
-
改表名
-
改列名
-
增加列。当创建表时,数据多于列,那么就不匹配。当列多于数据时,就匹配null。
-
替换列:整体替换
-
8.删除表
- drop table 表名;