hive載入資料
阿新 • • 發佈:2018-11-15
1
)載入到普通表
-
-
載入本地文字檔案內容(要與hive表字段分隔符順序都要一致)
load data local inpath
'/home/hadoop/orders.csv'
overwrite into table orders;
1
> 如果資料來源在HDFS上,則 load data inpath
'hdfs://master:9000/user/orders'
overwrite into table orders;
2
) 載入到分割槽表
load data local inpath
'/home/hadoop/test.txt'
overwrite into table test partition (dt
=
'2017-09-09'
);
1
> partition 是指定這批資料放入分割槽
2017
-
09
-
09
中;
3
)載入分桶表
-
-
先建立普通臨時表
create table orders_tmp
(
user_id
int
,
user_name string,
create_time string
)
row
format
delimited fields terminated by
','
stored as textfile;
-
-
資料載入臨時表
load data local inpath
'/home/hadoop/lead.txt'
overwrite into table orders_tmp;
-
-
匯入分桶表
set
hive.enforce.bucketing
=
true;
insert overwrite table orders select
*
from
orders_tmp;
4
) 匯出資料
-
-
匯出資料,是將hive表中的資料匯出到本地檔案中;
insert overwrite local directory
'/home/hadoop/orders.bak2017-12-28'
select
*
from
orders;
【去掉local關鍵字,也可以匯出到HDFS上】
5
)插入資料
-
-
insert select ; {}中的內容可選
insert overwrite table order_tmp {partition (dt
=
'2017-09-09'
)} select
*
from
orders;
-
-
一次遍歷多次插入
from
orders
insert overwrite table log1 select company_id,original where company_id
=
'10086'
insert overwrite table log1 select company_id,original where company_id
=
'10000'
[每次hive查詢,都會將資料集整個遍歷一遍,當查詢結果會插入過個表中時,可以採用以上語法,將一次遍歷寫入過個表,以達到提高效率的目的。]
6
)複製表
-
-
複製表是將源表的結構和資料複製並建立為一個新表,複製過程中,可以對資料進行篩選,列可以進行刪減
create table order
row
format
delimited fields terminated by
'\t'
stored as textfile
as
select leader_id,order_id,
'2017-09-09'
as bakdate
from
orders
where create_time <
'2017-09-09'
;
[備份orders表中日期小於
2017
-
09
-
09
的內容到order中,選中了leader_id,order_id,添加了一個bakdate列]
7
)克隆表
-
-
只克隆源表的所有元資料,但是不復制源表的資料
create table orders like order;
8
)備份表
-
-
將orders_log資料備份到HDFS上命名為
/
user
/
hive
/
action_log.export;備份是備份表的元資料和資料內容
export table orders_log partition (dt
=
'2017-09-09'
) to
'/user/hive/action_log.export'
;
9
) 還原表
import
table orders_log
from
'/user/hive/action_log.export'
;