hive-DDL

本文介绍了Hive中的数据查询语言,包括集合数据类型的使用,如数组、映射和结构,以及如何进行类型转化。此外,详细阐述了DDL操作,如创建、查看、修改和删除数据库及表,特别是内部表和外部表的管理。还涉及到数据导入与加载,以及表的增删改操作,强调了外部表在处理共享数据时的安全性。
摘要由CSDN通过智能技术生成
-- 集合数据类型,很复杂,但是不常用
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操作是指对Hive表进行定义、创建、修改和删除的操作。通过HiveDDL语句可以方便地管理和操作Hive表,在数据仓库中进行数据的存储和查询分析。 首先,Hive表的DDL操作包括创建表、删除表、修改表结构等。通过CREATE TABLE语句可以在Hive中创建新的表,并指定表的名称、列信息、分区信息以及其他属性。而DROP TABLE语句可以用来删除已存在的表,释放存储空间。此外,Hive还支持ALTER TABLE语句,允许对表进行修改,比如增加、删除、重命名列等操作。 其次,Hive表的DDL操作还包括对表的分区管理。通过ALTER TABLE语句,可以在表中添加、删除、修改分区,以便更加灵活地组织和管理数据。 再次,DDL操作还包括对表的存储格式和存储位置的定义。通过ALTER TABLE语句,可以修改表的存储格式,比如将表存储为文本文件或Parquet文件等。同时,也可以通过ALTER TABLE语句来指定表的存储位置,可以将数据存储到HDFS中的指定目录,或者关联其他外部存储系统。 最后,Hive表的DDL操作还支持对表的权限管理。通过GRANT和REVOKE语句,可以授权和撤销用户对表的访问、修改、删除等权限,保证数据的安全性和访问的控制。 综上所述,Hive表的DDL操作提供了一系列强大的功能,可以方便地对表进行定义、创建、修改和删除。通过DDL操作,我们可以更好地管理和维护数据仓库中的表,并灵活地进行数据查询和分析。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值