根據導出的位置不一樣,將這些方式分爲三種:
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;