HIve基礎指令

2021-09-04 12:12:02 字數 1869 閱讀 5794

命令

作用額外說明

show databases;

檢視所有資料庫

create database ***;

建立***資料庫

建立的資料庫,實際是在hadoop的hdfs檔案系統裡建立乙個目錄節點,統一存在:/user/hive/warehouse目錄下

use ***;

進入***資料庫

show tables;

檢視當前資料庫下的所有表

create table ***(id int,name string)

建立***表,以及相關字段

hive裡,用的是string,不用char和varchar。此外,也是hdfs裡的乙個目錄節點。

insert into *** values(1,'gao')

向***表中插入資料

1.hdfs不支援資料的修改和刪除,但是在2.0版本後支援了資料追加。實際上,insert into語句執行的是追加操作。2.注意:hive支援查詢,行級別的插入。不支援行級別的刪除和修改。3.hive的操作實際上是執行乙個job的任務,呼叫的是hadoop的mr。4.插入完資料之後,發現hdfs表目錄節點下,多了乙個檔案,檔案裡存了插入的資料,所以,hive儲存的資料,是通過hdfs的檔案來儲存的。

select * from ***

檢視表資料

也可以根據欄位來查詢,比如select id from ***。

有時會出現這樣的情況:

原因是:我們從外部匯入的檔案的資料格式有誤

把資料匯入到hive之後,hive並不知道分隔符是什麼,所以就不能正確的切分資料。所以顯示null。

解決辦法:在hive建立表的時候,要指定分隔符,並且這個分隔符要和外部檔案裡的分割副一致。

drop table ***

刪除表create table *** (字段) row format delimited fields terminated by ' ';

建立表,並指定分隔符

分隔符 為『 』 內的格式;

desc ***

檢視***表結構

create table aaa like ***

建立一張aaa表,表結構和***表結構相同

lkie只是複製表結構,不複製資料

insert overwrite table aaa select * from ***

把***表資料插入aaa表中

insert overwrite 可用於將select 查詢的資料插入到指定的表中或指定的目錄下

alter table aaa rename to bbb

為表aaa重新命名為bbb

alter table *** add columns(字段)

為表***增加一列字段

exit

退出hive

當退出hive後,切換到別的目錄執行 sh hive 進入。資料庫與表等資料就會不同或者沒有。

原因:hive可以管理hdfs上的檔案,用表的形式來管理檔案資料。而表名,表裡面有哪些字段,字段型別,哪張表存在哪個資料下等這些表資訊,稱為hive的元資料資訊。

知識點:hive的元資料資訊不是存在hdfs上的,而是存在hive自帶的derby關係型資料庫裡的。即hive管理的資料是在hdfs上的,hive的元資料資訊是存在關係型資料庫裡的。

上述問題原因就是由於derby資料庫引起的,這個資料庫功能不完善,僅用於測試。

derby資料庫儲存hive元資料的方式:當在bin目錄下進入hive時,derby資料會在bin目錄下生成乙個metastore_db目錄,將元資料資訊存在這個目錄下。當換目錄時,derby又會在別的目錄下生成乙個metastor_db目錄,存放元資料。

解決辦法:預設使用的derby資料庫換成mysql資料庫。

Hive基礎指令 筆記

命令 作用 額外說明 show databases 檢視都有哪些資料庫 就像sql語言中的一樣,以下空白說明和mysql資料庫一樣 create database park 建立park資料庫 建立的資料庫,實際是在hadoop的hdfs檔案系統裡建立乙個目錄節點,統一存在 user hive wa...

Hive個人心得筆記之基礎指令

desc 表 檢視表結構 沒有主鍵,可以重複提交 手動提交 效率過低,可以通過檔案形式傳輸 load data local inpath home software 1.txt into table stu 通重載入檔案資料到指定的表裡 但是,如果不指定分割格式,無法正常傳輸 作用 額外說明 sho...

hive基本操作指令

create table mytable id int,name string row format delimited fields terminated by t stored as textfile 附 mytable是表名 id int是引數名字和引數型別 as textfile是代 式,可...