HIVE 表 分割槽表 分桶表

2021-08-30 17:24:47 字數 3033 閱讀 9758

hive中表

-------------------

1.managed table

託管表。

刪除表時,資料也刪除了。

2.external table

外部表。

刪除表時,資料不刪。

hive命令

----------------

//建立表,external 外部表

$hive>create external table if not exists t2(id int,name string,age int)

comment 'xx' row format delimited fields terminated by ',' stored as textfile ; 

//檢視表資料

$hive>desc t2 ;

$hive>desc formatted t2 ;

//載入資料到hive表

$hive>load data local inpath '/home/centos/customers.txt' into table t2 ;    //local上傳檔案

$hive>load data inpath '/user/centos/customers.txt' [overwrite] into table t2 ;    //移動檔案

//從hive表匯出資料

$hive>insert overwrite local directory '/opt/hive-export/student.txt' row format delimited fields terminated by '\t' select * from student;     ###匯入本地linux

$hive>insert overwrite  directory '/*****/student2.txt' row format delimited fields terminated by '\t' select * from student;     ###匯入hdfs

$root hive>bin/hive -e 'select * from default.student' >/opt/hive-export/student3.txt      ###匯入本地linux

######export匯出   import 匯入   成對使用########

//複製表

mysql>create table tt as select * from users ;        //攜帶資料和表結構

mysql>create table tt like users ;            //不帶資料,只有表結構

hive>create table tt as select * from users ;    

hive>create table tt like users ;    

//count()查詢要轉成mr

$hive>select count(*) from t2 ;

$hive>select id,name from t2 ;

//$hive>select * from t2 order by id desc ;                //mr

//啟用/禁用表

$hive>alter table t2 enable no_drop;    //不允許刪除

$hive>alter table t2 disable no_drop;    //允許刪除

//分割槽表,優化手段之一,從目錄的層面控制搜尋資料的範圍。

//建立分割槽表.

$hive>create table t3(id int,name string,age int) partitioned by (year int, month int) row format delimited fields terminated by ',' ;

//顯式表的分割槽資訊

$hive>show partitions t3;

//新增分割槽,建立目錄

$hive>alter table t3 add partition (year=2014, month=12);

//刪除分割槽

hive>alter table t3 drop if exists partition (year=2014, month=11);

//分割槽結構

hive>/user/hive/warehouse/mydb2.db/t3/year=2014/month=11

hive>/user/hive/warehouse/mydb2.db/t3/year=2014/month=12

//向分割槽表中插入資料

hive> insert into table t3  partition(year=2014,month=11) values (******);

//載入資料到分割槽表

hive>load data local inpath '/home/centos/customers.txt' into table t3 partition(year=2014,month=11);

//建立桶表

$hive>create table t4(id int,name string,age int) clustered by (id) into 3 buckets row format delimited fields terminated by ',' ;

******

clustered by  (m)  into n buckets   按照m欄位分成n個桶

row format delimited fields terminated by ','  用「,」進行分行

******

//載入資料不會進行分桶操作

$hive>load data local inpath '/home/centos/customers.txt' into table t4 ;

//查詢t3表資料插入到t4中。

$hive>insert into t4 select id,name,age from t3 ;

//桶表的數量如何設定?

//評估資料量,保證每個桶的資料量block的2倍大小。

Hive分割槽表與分桶

在hive select查詢中,一般會掃瞄整個表內容,會消耗很多時間做沒必要的工作。分割槽表指的是在建立表時,指定partition的分割槽空間。分割槽語法 分割槽表操作增加分割槽 刪除分割槽 alter table employees drop ifexists partition country...

hive表型別 桶表 分割槽表

hive表型別 桶表 桶表是對資料進行雜湊取值,然後放到不同檔案中儲存。建立表create table t bucket id string clustered by id into 3 buckets 載入資料 set hive.enforce.bucketing true insert into...

Hive 中內部表 外部表,分割槽表,分桶表

1.內部表 外部表 管理表 內錶,也叫託管表 外部表 外表 建表時,有external關鍵字的就是外部表。在drop table時,外表的資料是不會被刪除的,內錶的資料會被刪除,但兩者對應的元資料 metadata 是都會被刪除的 如果資料只是給hive用,那麼建議建立內錶 如果資料還可能會給hiv...