集群間 Hive 資料 遷移 問題

2021-07-04 06:51:01 字數 1062 閱讀 9441

1、 從hive中匯出資料至本地目錄

insert overwrite local directory '/export/tmp' select * from test1 where create_time = '2013-11-25'; 

列資料之間預設以^a隔開。

2、將本地資料上傳另乙個集群的hdfs

/usr/local/hadoop-2.2.0/bin/hdfs  dfs -put  /export/tmp  

hdfs://host:port/tmp    

3、將hdfs中的資料檔案匯入hive表中

hive -e "load data inpath '/tmp' into table test1;"

但某些表建立時,設定的以 '\t' 分割資料,在讀取不到 '\t' 時,會將整行資料都匯入第一列。

如果是hive-0.11.0版本,可以這樣匯出:

hive> insert overwrite local directory '/export/tmp'

hive> row format delimited

hive> fields terminated by '\t'

hive> select * from test1 where create_time = '2013-11-25';

如果是低版本的hive,只好將匯出的資料檔案中的^a,替換為'\t':
sed -i 's/^a/\t/g' filename
同時需要將隱藏的.filename.crc校驗檔案刪除掉,

不然在上傳的過程中,hadoop將通過fsinputchecker判斷需要上傳的檔案是否存在進行校驗的crc檔案,即.

filename

.crc,如果存在crc檔案,將會對其內容一致性進行校驗,如果校驗 失敗,會報fs.fsinputchecker: found checksum error,停止上傳該檔案,最終導致整個mr任務無法執行。

hive表集群間的遷移

記錄下工作中由於需要複製生產環境到測試環境以供測試使用做的一次資料庫的遷移,方法比較繁瑣,有待改進 基本思路 將生產環境的表匯出到hdfs,將hdfs的資料get到本地,scp到測試環境的本地,put到測試環境的hdfs,再進行匯入 hive表到處到hdfs export table table n...

集群間hive資料表的遷移

方式一 此方法需要建庫建表 在原集群hive上檢視遷移表的建表語句及所在庫,然後在新集群hive上建庫建表 show create table tb name create database db name create table tb name hadoop fs get user hive w...

Hive資料在Hadoop集群間的遷移

環境說明 136.64.69.10 e3base02 原集群hive服務端 136.64.69.49 e3base49 目標集群hive服務端 136.64.69.75 e3base55 目標集群hive客戶端 weixh test hive測試庫 原集群匯出資料臨時目錄 hdfs dfs mkdi...