一、数据库操作
1. 显示所有数据库
2. 查看数据库信息
3. 新增数据库
4. 显示出当前使用的数据库
5. 切换当前数据库
6. 删除数据库
二、表操作
1. 显示当前数据库中所有的表
2. 新增表 - 直接建表 - 查询建表 - Like 建表
3. 查询表结构信息
4. 加载数据
5. 删除表
(注:使用命令行时,每次操作语句都要以 ; 结尾)
一、数据库操作
1. 显示所有数据库
模糊查找数据库
2. 查看数据库信息
查看在 hdfs 上数据库的位置和读写权限
3. 新增数据库
4. 显示出当前使用的数据库
5. 切换当前数据库
6. 删除数据库
数据库中若有表,则不能删除
若想删除,使用命令:drop database if exists testdb1 cascade;
注:hive中是不能对数据库进行修改的,数据库的名称或存储路径都不能修改
二、表操作(updating)
1. 显示当前数据库中所有的表
2. 新增表
- 直接建表
- 查询建表
- Like 建表
(1) 直接建表
语法 ( “ [] ” 为可选,“ | ” 为二选一 )
CREATE [TEMPORARY] [EXTERNAL] TABLE [IF NOT EXISTS] [db_name.]
table_name
[ (col_name data_type [ COMMENT col_comment ], ...) ] // COMMENT 备注字段
[ COMMENT table_comment ]
[ PARTITIONED BY (col_name data_type [COMMENT col_comment], ...) ]
// PARTITIONED 分区,表中的一个 Partition 对应于表下的一个目录
// 辅助查询,缩小查询范围,加快数据的检索速度
[ CLUSTERED BY (col_name, col_name, ...) [SORTED BY (col_name [ASC|DESC], ...)
] INTO num_buckets BUCKETS ]
// CLUSTERED 分桶,将一个列名下的数据切分为一组桶
[ SKEWED BY (col_name, col_name, ...)
ON ((col_value, col_value, ...), (col_value, col_value, ...), ...)
[ STORED AS DIRECTORIES ]
// SKEWED 倾斜的列名和值, 记录这些倾斜的列名和值,在join时能够进行优化
// STORED AS DIRECTORIES 可选,它指定了使用列表桶
[
[ ROW FORMAT row_format] DELIMITED
// 指明文件的间隔符
[ FIELDS TERMINATED BY char ] // 列分割,一般用 ‘ \t ’
[ COLLECTION ITEMS TERMINATED BY char ] // 集合
[ MAP KEYS TERMINATED BY char ] // 键值对
[ LINES TERMINATED BY char ] // 行分割,用 ‘ \n ’
[ STORED AS file_format] //表数据的存储格式,默认为 textfile
| STORED BY 'storage.handler.class.name' [WITH SERDEPROPERTIES (...)]
]
[ LOCATION hdfs_path ] // 可定义表存储的位置
[ TBLPROPERTIES (property_name=property_value, ...)] // 可定义表的属性,表的创建 者、创建时间等
[ AS select_statement];
1)新增内部表
2)新增外部表
在建表时添加 external 修饰
内部表和外部表的区别:
- 内部表数据由Hive自身管理,外部表数据由HDFS管理
- 删除内部表,会删除元数据库中的元数据和hdfs上的数据
删除外部表,只删除元数据中的元数据
注:建议使用外部表,但如果文件权限配置合理,内部表外部表无所谓,可以通过hive+sentry来给不同用户配置权限
3. 查询表结构信息
desc table_name;
desc extended table_name;
desc formatted table_name;
(2)查询建表
(3)Like 建表
4. 加载数据
step1:准备数据
根据 t1 表结构,在 /opt/data/hivedatas 目录下创建文件 t1.txt
填写以下信息:
1 王五 看书-看电影-编程 北京:朝阳区
2 牛六 看书-编程 台湾:台北
3 赵七 听音乐-看书 福建:宁德
step2:装载数据
之前使用 MySQL,我们用 insert 语句插入数据
在Hive中,因为需要装载大量数据,一般使用 load data 语句插入数据
加载数据有两种方法:一种是从本地文件系统,第二种是从Hadoop文件系统
语法
LOAD DATA [LOCAL] INPATH 'filepath' [OVERWRITE] INTO TABLE tablename
[ PARTITION (partcol1=val1, partcol2=val2 ...) ]
// LOCAL 指定本地路径,不写则为hdfs的文件
// OVERWRITE 覆盖表中的数据,不写则不会覆盖
// PARTITION 指定分区,可选
5. 删除表
参考链接:https://blog.csdn.net/u010708577/article/details/79158358
https://blog.csdn.net/l1028386804/article/details/80547441
实战例子:https://blog.csdn.net/qq_41934990/article/details/81903963
网友评论