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 進行簡單使...