hive 基本指令命令

1.show databases 查看有那些數據庫
在這裏插入圖片描述
2.創建park數據庫,實際上hadoop的HDFS文件系統裏創建一個目錄節點,統一存在/usr/hive/wareshouse目錄下
在這裏插入圖片描述
在這裏插入圖片描述
3.進入數據庫
在這裏插入圖片描述
4.查看當前數據庫下的所有表
在這裏插入圖片描述
5.創建stu表,以及相關的兩個字段
在這裏插入圖片描述
在hive中,用的是string,不用char和varchar,此外,所創建的表,也是HDFS裏的一個目錄節點。
在hive裏面有一個default數據庫,這個hdfs目錄結構上是看不到的,凡是在default數據庫下建立的表,都直接存在warehouse目錄下.
在這裏插入圖片描述
6.向stu表插入數據
HDFS不支持數據的修改和刪除,在2.0版本後支持了數據最加,使用insert into語句執行的最加操作.
hive支持查詢,行級別的插入,不支持行級別的刪除和修改.
hive的操作實際是執行job任務,調用的是hadoop的MR.
在這裏插入圖片描述
插入完後,我們可以發現DHFS stu目錄下,多了一個文件,文件裏存了插入的數據,所以得出結論,hive存儲的數據,是通過HDFS的文件來存儲的.
在這裏插入圖片描述
7.查看錶的數據,也可以用字段來查詢select id from stu
在這裏插入圖片描述

8.刪除表stu
drop table stu

9.創建stu1表,並指定分割符空格.
在這裏插入圖片描述
把外部數據導入hive,這樣就可以正確查出數據了.
在這裏插入圖片描述
10.查詢stu表結構
在這裏插入圖片描述
11.創建一張stu2表,表結構和stu表結構相同,like只複製表結構,不復制數據
在這裏插入圖片描述
在這裏插入圖片描述
12.把stu表數據插入到stu2表中,insert overwrite可用將select查詢出的數據插入到指定的表中或指定的目錄下如:
把查詢結果存在本地的目錄下,
執行:insert overwrite local directory ‘/home/stu’ row format delimited fields terminated by’’ select * from stu;

也可以將查詢結果存到HDFS文件系統上
執行:insert overwrite directory ‘/stu’ row format delimited fields terminated by’’ select * from stu;

也可以將查詢結果插入到多張表中
執行:from stu insert overwrite table stu1select * insert overwrite table stu2 select *;
結果是把stu表的數據插入stu1和stu2表.(也可以加where條件等,比如select * where id>3)

在這裏插入圖片描述
13.爲表重新命令,將stu重新命名爲stu3.
在這裏插入圖片描述
在這裏插入圖片描述
14.爲表stu1增加一個列字段age,類型爲int
在這裏插入圖片描述
你可以連接數據庫查看錶的信息.
DBS存放的原數據信息
TBL存放的tables表信息
COLUMNS存放的是列字段信息.
在這裏插入圖片描述
此外,可以通過查看SDS表來查詢HDFS裏的位置信息.
在這裏插入圖片描述

15.hive的內部表和外部表
在查看原數據信息時,有一張TBLS表,其中有一個字段屬性:TBL_TYPE—MANAGED_TABLE,MANAGED_TABLE表示內部表.
在這裏插入圖片描述
15.1內部表的概念
先在hive裏創建一張表,然後向這個表插入數據(用insert可以插入數據,也可以通過加載外部文件方式來插入數據),這樣稱之爲hive的內部表.

15.2外部表的概念
HDFS裏已經有數據了,比如有一個1.txt文件,裏面存儲這樣的一些數據:
1 jary
2 rose
然後,通過hive創建一張表stu來管理這個文件數據,則stu這樣表稱爲外部表,注意,hive外部表管理的是HDFS裏的某個目錄下的文件數據.

創建外部表的命令
create external table stu (id int,name string) row format delimited fields terminated by ’ ’ location ‘/data’

hive無論是內部表或外部表,當向HDFS對應的目錄節點下追加文件時(只要符合格式),hive都可以把數據管理進來.

16.內部表和外部表的區別.
通過hive執行:drop table stu,這時刪除表操作,如果stu是一個內部表,則HDFS對應的目錄節點會被刪除.
如果stu是一個外部表,HDFS對應的目錄節點不會刪除.

17.Hive分區表
hive也支持分區表,對數據進行分區可以提高查詢時的效率.
普通表和分區表區別:有大量數據增加的需要建分區表.
執行:create table book (id int, name string) partitioned by(categorystring ) row format delimited fields terminated by ‘’;

注:在創建分區表時,partitioned字段可以不在字段列表中,生成的表中自動就會具有該字段.
在這裏插入圖片描述
分區表加載數據
load data local inpath ‘/usr/wenjian/book_chin.txt’ overwrite into table book partition(category=‘cn’);
經檢查發現分區也是一個目錄.
在這裏插入圖片描述
查詢book目錄下的所有數據
select * from book;
在這裏插入圖片描述
只查詢cn分區的數據;
select * from book where category=‘cn’;只查詢cn分區的數據
在這裏插入圖片描述

還可以通過mysql的SDS來查詢原數據.
在這裏插入圖片描述

18.如果想在HDFS的目錄下,自己創建一個分區,然後在此目錄下上傳文件,比如:
在這裏插入圖片描述
此時的手動目錄時無法被hive使用的,因爲原數據庫中沒有記錄該分區.
如果需要自己創建的分區被識別,需要執行
ALTER TABLE book add PARTITION (category = ‘jp’) location ‘/user/hive/warehouse/park.db/book/category=jp’;
在這裏插入圖片描述
這行命令的作用是在原數據Dock表裏創建對應的原數據信息.
在這裏插入圖片描述
刪除分區
在這裏插入圖片描述
在這裏插入圖片描述
修改分區
alter table book partition(category=‘cn’) rename to partition (category=‘nn’);

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章