Hive知識點(五) 內 外 分割槽表

2021-10-08 09:48:00 字數 3807 閱讀 2866

3.手動在hdfs中建立分割槽目錄的修復

2.產看分割槽表

hive裡面有兩種資料:1.data(表資料):儲存在hdfs

2.metadata(元資料):儲存在mysql

內部表(managed):hive.metastore.warehouse.dir=

/use/hive/warehouse #內部表的建立,預設路徑

當刪除表==

==》同時刪除data+medadata

外部表(external):create external table 表名 location 『filepath』; #建立表,可以指定任意路徑

當刪除表==

==》僅僅刪除metadata

(mysql),其中對於表資料(hdfs)上面的資料還是存在的,即hdfs中的路徑和檔案都存在,只是mysql中的元資料被刪除

這種在生產工作當中用的比較多

表資料:儲存在hdfs #內部表會刪除,但是外部表上在hdfs中的資料不會被刪除

元資料:儲存在mysql #內外表都是刪除掉

hive中的分割槽其實就是hdfs中的乙個目錄,相當於把乙個大的資料集根據業務需求分割成更小的資料集,在查詢的時候使用where子句的表示式選擇查詢所需要指定的分割槽,這個查詢efficienty will improve

1.建立分割槽表

create table 表名(字段 字段型別,..

.)partition by (字段 字段型別) row format delimited fields terminated by '\t'

;2.載入資料(將本地資料載入到hive分割槽表)

load data loca inpath 'filepath' into table 表名 partiton

(字段=

'value');

3.分割槽查詢

select * from 表名 where 分割槽字段=『value』;如1:

create table emp_partiton

(empno int

,ename string,

job string,

mgr int

,hiredate string,

sal double

,comm double

,deptno int

)partitioned by

(mounth string)

row format delimited fields terminated by '\t'

如2:load data local input '/home/hadoop/tmp/emp.tex' into table emp_partiton partiton(mouth=

'20200722');

如3:select * from emp_partiton where mouth=

'20200722'

;

1.建立表

create table 表名(字段 字段型別,..

.)partitoned by

(欄位1 字段型別,欄位2 字段型別) row format delimited fields terminated by '\t'

;2.載入資料

load data local inpath 'filepath' into table 表名 partition

(欄位1

='value'

,欄位2

='value');

3.分割槽查詢

select * from 表名 where 分割槽欄位1

='value' and 分割槽欄位2

='value'

;如1:

create table emp2_partiton

(empno int

,ename string,

job string,

mgr int

,hiredate string,

sal double

,comm double

,deptno int

)partitioned by

(mouth string,day string)

row format delimited fields terminated by '\t'

;如2:

load data local inpath '/home/hadoop/tmp/emp.txt' into table emp2_partiton partition

(mouth=

'202008'

,day=

'22');

如3:select * from emp2_partiton where mouth=

'202008' and day=

'22'

;

hive命令列視窗其實也是可以執行作業系統命令

1.手動建立分割槽目錄(hdfs)

dfs -mkdir -p /user/hive/warehouse/表名/分割槽字段;

2.查詢元資料(mysql)

mysql -uroot -p

use hive;

show tables;

select * from partitions;

----

----

----

----

----

----

----

----

--如1:

dfs -mkdir -p /user/hive/warehouse/emp_partiton/mounth=

202006

;如2:

mysql -uroot -p

use hive;

show tables;

select * from partitions; #發現分割槽沒有20206

1.問題:

手動建立的hdfs分割槽目錄,在元資料中不能被識別,需要使用hive命令進行修復
2.solve:

修復1:

msck repair table emp_partiton;

修復2:

alter table emp_partiton add partition

(mounth=

'202006');

----

----

----

----

----

-----如:

dfs -mkdir -p /user/hive/warehouse/emp_partiton/mounth=

202006

;dfs -put /home/hadoop/tmp/emp.txt /user/hive/warehouse/emp_partiton/mounth=

202006

;alter table emp_partiton add partition

(mounth=

'202006'

);或者msck repair table emp_partiton;

備註:企業中常用的是第二種修復方法

select * from 表名 where 分割槽字段=value;   #通過分割槽字段進行查詢

show partitions 表名: #檢視表的分割槽都有哪些

hive知識點詳解

hive支援的常用資料型別和檔案格式 hive是一種構建在hadoop上的資料倉儲,hive把sql查詢轉換為一系列在hadoop集群中執行的mapreduce作業,是mapreduce更高層次的抽象,不用編寫具體的mapreduce方法。hive將資料組織為表,這就使得hdfs上的資料有了結構,元...

學習hive知識點

1 建立檢視 hive create view valid records as select from records2 where temperature 9999 2 檢視檢視詳細資訊 hive describe extended valid records 3 從表中匯出資料 hadoop ...

Hive知識點總結(一)

眾所周知實際開發過程中,hive主要是通過其豐富的內建函式,便捷的類sql來處理經過mapreduce清洗後的資料,下面我們進行hive的知識點總結。1 hive使用方式 方式1 學習時使用的最基本的簡單查詢 bin hive 啟動hive hive select from t test 進行簡單使...