-- 集合数据类型,很复杂,但是不常用
show tables;
select * from test;
select friends[0] from test; --查看每条数据的friends的第一个 (array)
select children['xiao song'] from test; --查看每条数据的xiaosong的年龄,(map)
select address.street from test; --查看每条数据的street数据,(struct)
-- 类型转化,强制转换
select '1'+2,cast('1' as int)+2;
-- DDL 数据定义:增删改查库和表
-- 默认路径:数据库在HDFS上的默认存储路径是/user/hive/warehouse/*.db
create database if not exists db_hive;
-- 指定路径
create database if not exists db_hive2 location '/db_hive2.db';
-- 查看建表语句
show create table test;
-- 过滤显示查询的数据库
show databases like 'db_hive*';
-- 查看数据库信息
desc database db_hive;
-- 查看数据库的详细信息
desc database extended db_hive;
-- 修改DBPROPERTIES属性并查看
alter database db_hive set dbproperties('createTime'='20170803');
desc database extended db_hive;
-- 删除数据库
drop database if exists db_hive2;
-- 如果数据库不为空,用cascade强制删除(暂不执行)
-- 不管在不在库中,库都能被删掉
-- drop database db_hive cascade ;
-- 建表语句:内部表,外部表,分区表,分桶表
use db_hive;
-- 外部的
CREATE [EXTERNAL] TABLE [IF NOT EXISTS] table_name
[(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 row_format]
-- 定义文件格式
[STORED AS file_format]
[LOCATION hdfs_path]
[TBLPROPERTIES (property_name=property_value, ...)]
-- 后跟查询语句,根据查询结果创建表
[AS select_statement]
-- 管理表(内部表)
-- 中间表临时表用内部表
-- 删除一个管理表时,Hive也会删除这个表中数据
use db_hive;
-- 普通创建表
create table if not exists student(
id int, name string
)
row format delimited fields terminated by '\t'
stored as textfile;
-- 导入数据
load data local inpath '/opt/module/hive/datas/student.txt' into table student;
-- 根据查询结构创建表
create table if not exists student2 as select id, name from student;
--根据已经存在的表结构创建表
create table if not exists student3 like student2;
-- 查看表类型
desc formatted student2; --这个显示表头
desc extended student2;
drop table student2;
drop table student3;
-- 外部表
-- 对于共享的数据一定要建外部表,外部表更安全
-- 删除表时值元数据被删除,而存储在HDFS中的数据不会被删除,
-- 只需再写建表语句表和数据就会再次形成
-- 创建部门dept.txt和emp.txt并上传导hdfs
dfs -mkdir /datas;
dfs -put /opt/module/hive/datas/dept.txt /datas;
dfs -put /opt/module/hive/datas/emp.txt /datas;
create external table if not exists dept(
deptno int,
dname string,
loc int
)
row format delimited fields terminated by '\t';
create external table if not exists emp(
empno int,
ename string,
job string,
mgr int,
hiredate string,
sal double,
comm double,
deptno int)
row format delimited fields terminated by '\t';
-- 导入数据
load data inpath '/datas/dept.txt' into table dept;
load data inpath '/datas/emp.txt' into table emp;
-- 删除外部表
drop table dept;
-- 此时show tables没有dept表,但是hdfs里有数据
show tables ;
-- 只需重新建表就行了
create external table if not exists dept(
deptno int,
dname string,
loc int
)
row format delimited fields terminated by '\t';
show tables ;
select * from db_hive.dept;
-- 管理表与外部表的互相转换,
-- ('EXTERNAL'='TRUE')和('EXTERNAL'='FALSE')为固定写法,区分大小写!
desc formatted student; --table type显示为内部表
alter table student set tblproperties ('EXTERNAL'='TRUE');
desc formatted student; --table type显示为EXTERNAL_TABLE
alter table student set tblproperties ('EXTERNAL'='FALSE');
desc formatted student; --table type显示为内部表
show tables ;
use db_hive;
-- 不指定分隔符,会自动生成SOH分割
create table if not exists test1(id int,name string);
insert into test1 values (1,'wmhhh');
-- 自己创建分隔符
create table test2(id int,name string)
row format delimited fields terminated by ',';
insert into test2 values (1,'wmhh');
select * from test2;
show databases ;
-- 修改表
alter table student rename to studentsss;
-- 添加列
alter table student add columns (score double);
-- 更新列
alter table student change column score desc double;
--替换列
alter table student replace columns (id string,name string,score double);
-- 删除表
drop table xxx;
hive-DDL
于 2023-07-11 08:59:36 首次发布
本文介绍了Hive中的数据查询语言,包括集合数据类型的使用,如数组、映射和结构,以及如何进行类型转化。此外,详细阐述了DDL操作,如创建、查看、修改和删除数据库及表,特别是内部表和外部表的管理。还涉及到数据导入与加载,以及表的增删改操作,强调了外部表在处理共享数据时的安全性。
摘要由CSDN通过智能技术生成