命令 作用
額外說明
show databases;
檢視都有哪些資料庫
就像sql語言中的一樣,以下空白說明和mysql資料庫一樣
create database park;
建立park資料庫
建立的資料庫,實際是在hadoop的hdfs檔案系統裡建立乙個目錄節點,統一存在: /user/hive/warehouse 目錄下
use park;
進入park資料庫
show tables;
檢視當前資料庫下所有表
create table stu
(id int,name string);
建立stu表,以及相關的兩個字段
hive裡,用的是string,不用char和varchar。此外,所建立的表,也是hdfs裡的乙個目錄節點
insert into stu values(1,'zhang')
向stu表插入資料
1.hdfs不支援資料的修改和刪除,但是在2.0版本後支援了資料追加。實際上,insert into 語句執行的是追加操作。
2.所以注意:hive支援查詢,行級別的插入。不支援行級別的刪除和修改。
3.hive的操作實際是執行乙個job任務,呼叫的是hadoop的mr。
4.插入完資料之後,發現hdfs stu目錄節點下,多了乙個檔案,檔案裡存了插入的資料,所以得出結論,hive儲存的資料,是通過hdfs的檔案來儲存的。
select * from stu
檢視表資料
也可以根據欄位來查詢,比如select id from stu
drop table stu
刪除表select * from stu
查詢stu表資料
有時會出現這樣的情況:
原因是:我們從外部匯入的檔案的資料格式是:
1 jary
2 rose
即第一列和第二列是以空格為分隔符的。
但是把資料匯入到hive之後,hive並不知道分隔符是什麼,所以就不能正確的切分資料。所以顯示null。
解決辦法:在hive建立表的時候,要指定分割符,並且這個分割符要和外部檔案裡的分割符一致。詳見指令8
load data local inpath '/home/software/1.txt' into table stu;
通重載入檔案資料到指定的表裡
在執行完這個指令之後,發現hdfs stu目錄下多了乙個1.txt檔案。由此可見,hive的工作原理實際上就是在管理hdfs上的檔案,把檔案裡資料抽象成二維表結構,然後提供hql語句供程式設計師查詢檔案資料。
可以做這樣的實驗:不通過load 指令,而通過外掛程式向stu目錄下再上傳乙個檔案,看下hive是否能將資料管理到stu表裡。
create table stu1(id int,name string)row format delimited fields terminated by '';
建立stu1表,並指定分割符 空格。
此時,把外部資料匯入hive,就可以正確查出資料了。
desc stu
檢視 stu表結構
create table stu2 like stu
建立一張stu2表,表結構和stu表結構相同
like只複製表結構,不複製資料
insert overwritetable stu2 select * from stu
把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
' ' s
elect * from stu;
也可以將查詢結果插入到多張表中
執行:f
rom stu insert overwrite table stu
1select * insert overwrite table stu2 select *;
結果是把
stu表的資料插入
stu1
和stu2
表。(也可以加
where
條件等,比如
select * where id>3)
alter table stu rename to stu2
為表stu重新命名為stu2
alter table stu add columns (age int);
為表stu增加乙個列欄位age,型別為int
exit
退出hive
當退出hive後,我們可以嘗試做這樣的一件事:
之前我們是在bin目錄執行:sh hive 進入的
現在,我們換乙個目錄來進入hive,比如: sh /bin/hive 來進入
當我們檢視資料庫或檢視表時,發現之前建立的park和stu表都沒有了。
原因:hive可以管理hdfs上的檔案,用表的形式來管理檔案資料。
而表名、表裡有哪些字段,字段型別、哪張表存在哪個資料下等這些表資訊,稱之為hive的元資料資訊。
知識點:hive的元資料資訊不是存在hdfs上的,而是存在hive自帶的derby關係型資料庫裡的。
即hive管理的資料是在hdfs上的,hive的元資料資訊是存在關係型資料庫裡的。
上述問題出現的原因就是由於derby資料庫引起的,這個資料庫功能不完善,僅用於測試。
derby資料庫儲存hive元資料的方式:當在bin目錄下進入hive時,derby資料會在bin目錄下生成乙個metastore_db目錄,將元資料資訊存在這個目錄下。
當換個目錄,比如在home 目錄下hive時,derby又會在home目錄下生成乙個metastore_db目錄,儲存元資料資訊。
解決辦法:將預設使用的derby資料庫換成mysql資料庫
HIve基礎指令
命令 作用額外說明 show databases 檢視所有資料庫 create database 建立 資料庫 建立的資料庫,實際是在hadoop的hdfs檔案系統裡建立乙個目錄節點,統一存在 user hive warehouse目錄下 use 進入 資料庫 show tables 檢視當前資料庫...
Hive個人心得筆記之基礎指令
desc 表 檢視表結構 沒有主鍵,可以重複提交 手動提交 效率過低,可以通過檔案形式傳輸 load data local inpath home software 1.txt into table stu 通重載入檔案資料到指定的表裡 但是,如果不指定分割格式,無法正常傳輸 作用 額外說明 sho...
Linux學習筆記 基礎指令
linux系統的定義linux是一套免費使用和自由傳播的類unix作業系統,是乙個基於posix和unix的多使用者 多工 支援多執行緒和多cpu的作業系統。它能執行主要的unix工具軟體 應用程式和網路協議。它支援32位和64位硬體。linux繼承了unix以網路為核心的設計思想,是乙個效能穩定的...