Hive自身數據導出的方式

根據導出的位置不一樣,將這些方式分爲三種:
1、導出到本地文件系統;
2、導出到HDFS中;
3、導出到Hive的另一個表中。
一、導出到本地文件系統及HDFS中

INSERT OVERWRITE LOCAL DIRECTORY '/home/spark/opt/data_dir/base_food' row format delimited fields terminated by '|'  SELECT a.* FROM base_food a;

hive> insert  overwrite local directory '/home/spark/opt/data_dir/base_dh_stock'
    > select * from base_dh_stock;
    Time taken: 16.704 seconds
    數據量:37857
    
hive> 
    > insert  overwrite directory '/alidata/base_dh_stock'
    > select * from base_dh_stock;
    Time taken: 15.986 seconds
    數據量:37857
    
hive> insert  overwrite directory '/alidata/base_dh_stock'
    > row format delimited
    > fields terminated by '$'
    > select * from base_dh_stock;
Time taken: 15.749 seconds

hive> insert  overwrite local directory '/home/spark/opt/data_dir/base_dh_stock'
    > row format delimited
    > fields terminated by '$'
    > COLLECTION ITEMS TERMINATED BY ','
    > MAP KEYS TERMINATED BY ':'
    > select * from base_dh_stock;
    Time taken: 16.605 seconds
   
和導入數據到Hive不一樣,不能用insert into來將數據導出  
 
導出到本地文件系統一種更加便捷迅速的方式

hive -e "select * from 59store.base_dh_stock;" >> /home/spark/opt/data_dir/base_dh_stock.txt
Time taken: 1.729 seconds, Fetched: 37857 row(s)

[spark@Master data_dir]$ hive -e "select * from 59store.base_dh_stock;" >> /home/spark/opt/data_dir/base_dh_stock.txt
Time taken: 247.971 seconds, Fetched: 15363485 row(s)

二、導出到Hive的另一個表中
從一張Hive表導到另一張Hive表:

insert overwrite table base_order_partition partition (order_month=201501)
select * from base_order_all where order_mo=201501;

分區表的數據導入:

from base_order_all
insert overwrite table base_order_partition partition (order_month=201501)
select * where order_mo=201501
insert overwrite table base_order_partition partition (order_month=201502)
select * where order_mo=201502
insert overwrite table base_order_partition partition (order_month=201503)
select * where order_mo=201503
insert overwrite table base_order_partition partition (order_month=201504)
select * where order_mo=201504
insert overwrite table base_order_partition partition (order_month=201505)
select * where order_mo=201505
insert overwrite table base_order_partition partition (order_month=201506)
select * where order_mo=201506
insert overwrite table base_order_partition partition (order_month=201507)
select * where order_mo=201507
insert overwrite table base_order_partition partition (order_month=201508)
select * where order_mo=201508
insert overwrite table base_order_partition partition (order_month=201509)
select * where order_mo=201509
insert overwrite table base_order_partition partition (order_month=201510)
select * where order_mo=201510
insert overwrite table base_order_partition partition (order_month=201511)
select * where order_mo=201511;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章