会员
众包
新闻
博问
闪存
赞助商
HarmonyOS
Chat2DB
所有博客
当前博客
我的博客
我的园子
账号设置
会员中心
简洁模式
...
退出登录
注册
登录
私人小院
博客园
首页
新随笔
联系
订阅
管理
第四章_Hive DDL 数据定义
源码2
第四章 DDL 数据定义
1. 对数据库的操作
1. 创建数据库
2. 查询数据库
3. 切换数据库
4. 修改数据库
5. 删除数据库
1. 语法
CREATE DATABASE [IF NOT EXISTS] database_name
[COMMENT database_comment]
[LOCATION hdfs_path]
[WITH DBPROPERTIES (property_name=property_value, ...)];
2. 路径说明
1. 默认路径
1. 不指定
LOCATION hdfs_path
默认使用
set hive.metastore.warehouse.dir
指定的路径
2. 指定路径
1.
create database ods location '/apps';
目录不存在时 会自动创建目录
1. 显示当前环境 所有数据库
1. show databases;
2. show databases like '*om*'
2. 查看 指定数据库 详情
1. desc database home
2. desc database extended home
1. use ods
alter database home
set dbproperties('createtime'='20170830');
1. drop database ods
只能删除空 数据库
2. 说明
如果数据库 不存在 会报错
[2022-01-27 14:38:41] [42000][10072] Error while compiling statement:
FAILED: SemanticException [Error 10072]: Database does not exist: ods
drop database if exists ods
3. 说明
1. 如果 创建数据库 存在会报错
[2022-01-27 14:41:50] [42000][1] Error while processing statement: FAILED:
Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask.
Database ods already exists
create database if not exists ods
3. 联级删除(删除非空数据库)
drop database if exists ods cascade
2. 创建表
1. 建表语法
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]
[like existing_table_or_view_name]
2. 参数说明
1. external
1. 外部表 标识
2. 指定 external 后
必须制定 [location hdfs_path]
3. 删除外部表时,只会删除 元数据,不会删除 外部存储文件
2. if not exists
1. 创建表时,如果 表名已存在,会报错
可以使用 这个参数 忽略这个异常
3. comment
1. 为 表名、字段名 添加注释
4. partitioned by
1. 指定分区字段, 多个分区用 逗号隔离
5. clustered by
1. 创建分桶表
6. sorted by
1. 对 桶中一个或多个列 排序(
不常用
)
7. row format delimited
1. 指定字段分隔符
2. 指定集合类型,元素分隔符
3. 指定 map类型 key - value 分隔符
4. 指定 行分隔符
fields terminated by char
collection items terminated by char
map keys terminated by char
lines terminated by char
8. stored as file_format
1. 指定存储文件类型
SEQUENCEFILE - 二进制序列文件(压缩文件)
TEXTFILE - 文本
RCFILE - 列式存储格式文件
ORC - 列式存储格式文(RCFILE的增强)
2. ORC 和 RCFILE 的区别
https://blog.csdn.net/lp_cq242/article/details/84336076
3. 注意事项
1. 使用 load into 时, 目标表 必须是 textfile 格式
9. location hdfs_path
1. 指定 表在HDFS 上的存储位置
10. as select_statement
1. 根据查询结果创建表
11. like existing_table_or_view_name
1. 复制表结构,但是不复制数据
3. 内部表&外部表
1. 内部表(管理表)
2. 外部表
1. 说明
1. 不被
external
修饰的表, 都是管理表
2. 表都声明周期 都被 Hive 管理
3. Drop 表后, 元数据和 HDFS的数据都会被删除
4. 不适合与其他工具 共享数据
1. 说明
1. 被 external 修饰的表, 是外部表
2. drop 表后,
元数据删除, HDFS 数据文件不会被删除
3. 内部表和外部表 相互转换
1. 内部->外部
2. 外部->内部
alter table book set tblproperties('EXTERNAL'='TRUE');
alter table book set tblproperties('EXTERNAL'='FALSE');
4. 修改表
1. 修改表名
ALTER TABLE person RENAME TO personNew;
2. 增加字段
3. 删除字段
4. 修改字段(名字、类型、注释、顺序)
5. 删除表
1.
drop table person
https://www.cnblogs.com/bajiaotai/p/15851027.html
posted @
2022-02-14 17:08
学而不思则罔!
阅读(
111
) 评论(
0
)
收藏
举报
刷新页面
返回顶部
公告