hive計劃(二)分割槽
阿新 • • 發佈:2018-11-17
partition 相當於索引,避免全表掃描
使用外部表不會清除HDFS檔案系統的資料
#使用hive -e 可以執行多條語句
hive -e 'sentence1; sentence2;'
#進入hive 後檢視當前路徑
!pwd;
#hive 介面使用命令檢視hdfs路徑
dfs -ls / ;
#使用desc可以查看錶的資訊
desc <table.name>
#檢視分割槽表的分割槽資訊
show partitions <table.name>
通過檔案儲存的位置來看分割槽:
一般分割槽資訊不存在於load的表中
--分割槽表的建立
create database if not exists bikepatition
comment 'test database';
create table if not exists bikepatition.bike(
tripduration string,
starttime string,
stoptime string,
start_station_id string,
start_station_name string,
start_station_latitude string,
start_station_longitude string,
end_station_id string,
end_station_name string ,
end_station_latitude string,
end_station_longitude string,
bikeid string,
usertype string,
birth_year string,
gender string
)
--注意patition要放在ROW語句前面
--表示按照月份分割槽
partitioned by (time_month string,creator string)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
STORED AS TEXTFILE;
載入資料
--使用load載入並表明partitioned資訊
--兩個分割槽的標籤資訊,就會產生兩級的目錄
--可以load不同的表到同一個表中,建立不同的分割槽
load data local inpath '<絕對路徑>' into table <table_name> partition(time_month = <分割槽標籤>,creator = 'eric');
alter table <table_name> add partition(time_month=<標籤>,creator='eric') location '<本地檔案路徑>';
--刪除分割槽
alter table <table_name> drop partition(time_month=<標籤> ,creator='eric');