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...