1. 程式人生 > >遷移hive,不同集群。

遷移hive,不同集群。

fault 執行 use active \n 導入數據 tps strong dir

step1: 設置默認需要導出的hive數據庫為defaultDatabase

在原集群中的任意節點上,新建“.hiverc”文件,加入如下內容:

vi ~/.hiverc
use defaultDatabase; 
defaultDatabase可修改為需要遷移的其它名稱

step2: 創建數據臨時目錄

hdfs dfs -mkdir /tmp/hive-export

step3: 生成數據導出腳本

執行如下命令生成數據導出腳本:

hive -e "show tables" | awk ‘{printf "export table %s to @/tmp/hive-export/%s@;\n",$1,$1}‘ | sed "s/@/‘/g" > export.sql

-- 這裏是生成全部的表,如果是遷移幾個表的話,那麽直接可以自己寫export.sql
-- 例如:export table rv_Cloud_Source to ‘/tmp/hive-export/rv_Cloud_Source‘;

step4: 手工導出數據到HDFS

執行腳本導出數據

hive -f export.sql

-- 這裏可以在export.sql加上use database;

step5: 下載數據

下載HDFS數據到本地,並傳送到目標集群(targetDir為目標集群地址)的/tmp/hive-export目錄:

hdfs dfs -get /tmp/hive-export/   
scp -r hive-export/ export.sql root@targetDir
hdfs dfs -put hive-export/ /tmp/hive-export

step6: 生成數據導入腳本

執行如下命令,復制導出腳本,並將腳本修改為導入腳本:

cp export.sql import.sql
sed -i ‘s/export table/import table/g‘ import.sql
sed -i ‘s/ to / from /g‘ import.sql

-- 這裏是導入全部表,所以使用sed做了一下替換,如果只導入幾個hive 表,那麽這樣即可:
-- use database; import table rv_Cloud_ADSDKSource from ‘/tmp/hive-export/rv_Cloud_ADSDKActiveUser‘;

step7: 導入數據

hive -f import.sql 


主要轉自:https://docs.ucloud.cn/analysis/uhadoop/migration 中的hive遷移

遷移hive,不同集群。