语法逻辑
1.基本数据类型
2.集合数据类型
2.1集合数据类型测试
假设某表有如下一行,我们用 JSON 格式来表示其数据结构。在 Hive 下访问的格式为:
{
"name": "songsong",
"friends": ["bingbing" , "lili"] , //列表 Array,
"children": { //键值 Map,
"xiao song": 18 ,
"xiaoxiao song": 19 }
"address": { //结构 Struct,
"street": "hui long guan" ,
"city": "beijing" }
}
创建本地数据测试文件 test.txt
songsong,bingbing_lili,xiao song:18_xiaoxiao song:19,hui long guan_beijing
yangyang,caicai_susu,xiao yang:18_xiaoxiao yang:19,chao yang_beijing
建表语句
create table test(
name string,
friends array<string>,
children map<string, int>,
address struct<street:string, city:string>
)
row format delimited
fields terminated by ','
collection items terminated by '_' //注意:MAP,STRUCT 和 ARRAY 里的元素间关系都可以用同一个字符表示,这 里用“_”。 因为都是集合数据类型
map keys terminated by ':'
lines terminated by '\n';
导入文本数据到测试表
load data local inpath "/opt/module/datas/test.txt" into table test;
访问三种集合列里的数据,以下分别是 ARRAY,MAP,STRUCT 的访问方式
3.类型转换
4.DDL操作
①、创建数据库 创建操作
1)创建一个数据库,数据库在 HDFS 上的默认存储路径是/user/hive/warehouse
create database db_hive;
注意:默认在/user/hive/warehouse文件夹下创建一个库 db_hive.db
该文件夹下当前还没有创建表,所以为空
2)避免要创建的数据库已经存在错误,增加 if not exists 判断。(标准写法)
create database if not exists db_hive;
3)创建一个数据库,指定数据库在 HDFS 上存放的位置
create database db_hive2 location '/db_hive2.db';
②查询数据库 查询操作
1) 显示数据库
show databases;
2) 过滤显示查询的数据库
show databases like 'd*';
3) 查看数据库详情
desc database db_hive;
4) 显示数据库详细信息,extended
desc database extended db_hive
③ 修改数据库
用户可以使用 ALTER DATABASE 命令为某个数据库的 DBPROPERTIES 设置键-值对属性值,来描述这个数据库的属性信息。数据库的其他元数据信息都是不可更改的,包括数
据库名和数据库所在的目录位置。
alter database db_hive set dbproperties('createtime'='20200630');
④ 删除数据库
1) 删除空数据库
drop database db_hive;
2) 如果删除的数据库不存在,最好采用 if exists 判断数据库是否存在
drop database if exists db_hive;
3) 如果数据库不为空,可以采用 cascade 命令,强制删除
drop database db_hive cascade;
⑤ 创建表