Hive 復制分區表和數據


  1. 非分區表: 

    復制表結構: create table new_table as select * from exists_table where 1=0;

    復制表結構和數據: create table new_table as select * from exists_table;

  2. 分區表:

    

-- 創建一個分區表
drop table if exists kimbo_test;
create table kimbo_test
(
order_id int,
system_flag string
)
PARTITIONED BY(dt string )
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\001' LINES TERMINATED BY '\n'
STORED AS TEXTFILE
;

-- 插入數據
insert overwrite table kimbo_test partition(dt='20170601')
values (186000983,'A'),(286000983,'B') ;

insert overwrite table kimbo_test partition(dt='20170602')
values (386000983,'F'),(486000983,'W') ;


create table test_par like kimbo_test;

-- 用 as select 復制一個新表
create table test_par2 as select * from kimbo_test where dt='20170601' limit 0;
-- 用 like 復制一個新表
create table test_par3 like kimbo_test;

-- 注意差異: as select 復制的是一個非分區表, like 復制的是一個分區表。
View Code

  表結構截圖:

    

 

  3. 將原表的數據復制到 新表(test_par3)

    1. 創建新表: create table test_par3 like kimbo_test;

    2. 將HDFS的數據文件復制一份到新表目錄,hive cmd模式下: dfs -cp -f /user/hive/warehouse/kimbo_test/* /user/hive/warehouse/test_par3/

    3. 修復分區元數據信息,hive cmd模式下: MSCK REPAIR TABLE test_par3;

  結果查詢:

    

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM