遷移hive,不一樣集羣。

step1: 設置默認須要導出的hive數據庫爲defaultDatabasesql

在原集羣中的任意節點上,新建「.hiverc」文件,加入以下內容:數據庫

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

step2: 建立數據臨時目錄oop

hdfs dfs -mkdir /tmp/hive-export

step3: 生成數據導出腳本code

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

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: 手工導出數據到HDFSget

執行腳本導出數據io

hive -f export.sql

-- 這裏能夠在export.sql加上use database;

step5: 下載數據table

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

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

step6: 生成數據導入腳本import

執行以下命令,複製導出腳本,並將腳本修改成導入腳本:

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遷移
相關文章
相關標籤/搜索