Hive-常用操作
一. 數據庫操作
1、創建數據庫
//用戶可以用 IF NOT EXISTS 選項來忽略這個異常。create database [ if not exists ] myhive ;2、創建數據庫并指定hdfs存儲位置
create database myhive2 location '/myhive2';3、修改數據庫,可以使用alter database 命令來修改數據庫的一些屬性。但是數據庫的元數據信息是不可更改的,包括數據庫的名稱以及數據庫所在的位置
alter database myhive2 set dbproperties('createtime'='202004090');4、查看數據庫詳細信息
①查看數據庫基本信息
desc database myhive2;②查看數據庫更多詳細信息
desc database extended myhive2;5、刪除數據庫
① 刪除一個空數據庫,如果數據庫下面有數據表,那么就會報錯
drop database myhive2;②強制刪除數據庫,包含數據庫下面的表一起刪除
drop database myhive cascade; //包含數據庫下面的表一起刪除; 不要執行,危險動作6、數據庫切換
use myhive(自己的數據庫名稱);二、Hive的字段類型
| 原始類型 | BOOLEAN | true/false | TRUE |
| TINYINT | 1字節的有符號整數 -128~127 | 1Y | |
| SMALLINT | 2個字節的有符號整數,-32768~32767 | 1S | |
| INT | 4個字節的帶符號整數 | 1 | |
| BIGINT | 8字節帶符號整數 | 1L | |
| FLOAT | 4字節單精度浮點數1.0 | ||
| DOUBLE | 8字節雙精度浮點數 | 1.0 | |
| DEICIMAL | 任意精度的帶符號小數 | 1.0 | |
| STRING | 字符串,變長 | “a”,’b’ | |
| VARCHAR | 變長字符串 | “a”,’b’ | |
| CHAR | 固定長度字符串 | “a”,’b’ | |
| BINARY | 字節數組 | 無法表示 | |
| TIMESTAMP | 時間戳,毫秒值精度 | 122327493795 | |
| DATE | 日期 | ‘2020-04-29’ | |
| INTERVAL | 時間頻率間隔 | ||
| 復雜類型 | ARRAY | 有序的的同類型的集合 | array(1,2) |
| MAP | key-value,key必須為原始類型,value可以任意類型 | map(‘a’,1,’b’,2) | |
| STRUCT | 字段集合,類型可以不同 | struct(‘1’,1,1.0), named_stract(‘col1’,’1’,’col2’,1,’clo3’,1.0) | |
| UNION | 在有限取值范圍內的一個值 | create_union(1,’a’,63) |
三、內部表操作
1、創建基本數據表(內部表)
create table tableName(字段名稱 字段類型,字段名稱 字段類型) ROW FORMAT DELIMITED IELDS TERMINATED BY char(char分隔符) 指定數據中字段與字段的分隔符 ‘\t’ 或 ‘,’ 或 ‘|’ 或其他2、創建表并指定字段之間的分隔符
create table if not exists stu2(id int ,name string) row format delimited fields terminated by '\t' stored as textfile location '/user/stu2';3、根據查詢結果創建表
create table stu3 as select * from stu2;4、根據已經存在的表結構創建表
create table stu4 like stu2; 15、查詢表的類型
desc formatted stu2;三、外部表操作
1. 外部表說明
外部表因為是指定其他的hdfs路徑的數據加載到表當中來,所以hive表會認為自己不完全獨占這份數據,所以刪除hive表的時候,數據仍然存放在hdfs當中,不會刪掉。
2. 管理表和外部表的使用場景
每天將收集到的網站日志定期流入HDFS文本文件。在外部表(原始日志表)的基礎上做大量的統計分析,用到的中間表、結果表使用內部表存儲,數據通過SELECT+INSERT進入內部表。
1、分別創建老師與學生表外部表,并向表中加載數據
create EXTERNAL table tableName(字段名稱 字段類型,字段名稱 字段類型)
建外部表需要指定數據的存儲路徑。通過LOCATION進行指定。
①創建老師表:
create external table techer (t_id string,t_name string) row format delimited fields terminated by '\t'; 1②創建學生表:
create external table student (s_id string,s_name string,s_birth string , s_sex string ) row format delimited fields terminated by '\t'; 12、 從本地文件系統向表中加載數據
load data local inpath ‘文件路徑’ into table 表名; 13、加載數據并覆蓋已有數據
load data local inpath ‘文件路徑’ overwrite into table 表名;4、 從hdfs文件系統向表中加載數據(需要提前將數據上傳到hdfs文件系統,其實就是一個移動文件的操作)
cd /export/servers/hivedatas hdfs dfs -mkdir -p /hivedatas hdfs dfs -put techer.csv /hivedatas/ load data inpath '/hivedatas/techer.csv' into table techer;四、修改表
1. 表重命名
alter table old_table_name rename to new_table_name;//把表score4修改成score5alter table score4 rename to score5;2. 增加/修改列信息
- 查詢表結構
- 添加列
- 查詢表結構
- 更新列
- 查詢表結構
- 刪除表數據
3.刪除表
drop table score5;總結
- 上一篇: Java并发篇_Java内存模型
- 下一篇: Java并发篇_乐观锁与悲观锁