跨集羣hive批量建表

【需求】
在集羣A建表,需要同步到集羣B並修復歷史分區。表用到的數據源在雲上。

【操作過程】先在老集羣A中獲取指定表的建表語句,把建表語句放到文件中,再把該文件發送到B集羣中,最後用hive -f 執行該文件即可在B集羣批量建表。

【注意】hive -f時涉及的HDFS操作權限問題
A集羣有9個表要同步到B集羣
[hive@bigdata-master-1 ~]$ vim tables_ToBeCreated_onOtherCluster

# 9個表是:
[hive@bigdata-master-1 ~]$ cat tables_ToBeCreated_onOtherCluster
tony_db.member_sign_gift
tony_db.member_sign_in
tony_db.member_sign_in_addition
tony_db.​member_sign_in_month
tony_db.​member_sign_user_day_award​
tony_db.​member_sign_user_month_award​
tony_db.member_sign_day_reward
tony_db.member_sign_month_reward
tony_db.​member_sign_recharge_config​

[hive@bigdata-master-1 ~]$ cat tables_ToBeCreated_onOtherCluster | while read tb; do hive -e "SHOW CREATE TABLE $tb" | grep -vE "Logging|OK|seconds" >> create_table.sql; echo finished ____ $tb; done
Logging initialized using configuration in file:/etc/hive/2.5.0.0-1245/0/hive-log4j.properties
OK
Time taken: 3.34 seconds, Fetched: 31 row(s)
finished ____ tony_db.member_sign_gift
Logging initialized using configuration in file:/etc/hive/2.5.0.0-1245/0/hive-log4j.properties
OK
Time taken: 2.78 seconds, Fetched: 19 row(s)
finished ____ tony_db.member_sign_in
... ...(省略其他的日誌輸出)
# 在每條建表語句末尾添加MSCK REPAIR TABLE XXXX.YYYYYY; 以便修復該錶的歷史分區
[hive@bigdata-master-1 ~]$ vim create_table.sql
# scp同步到B集羣
[root@bigdata-master-1 ~]# grep --color -C 2 master-1 ~/.ssh/authorized_keys
[root@bigdata-master-1 ~]# scp /home/hive/create_table.sql [email protected]:/root/	# 同步到B集羣
#在B集羣執行建表、修復歷史分區
#檢查ssh public-key,確保A集羣能通過ssh訪問此主機
[root@new-cluster-1 ~]# cd ~
[root@new-cluster-1 ~]# ll -ht
total 20K
-rw-r--r--. 1 root root 5.7K Aug 31 20:56 create_table.sql
-rw-r--r--. 1 root root    0 Aug 15 20:00 out
drwxr-xr-x. 2 root root 4.0K Aug 10 19:27 logs
-rw-------. 1 root root  871 Nov 14  2014 anaconda-ks.cfg
-rw-r--r--. 1 root root 3.4K Nov 14  2014 install.log.syslog
#注意HDFS權限問題
[root@new-cluster-1 ~]# chown hdfs:root create_table.sql 
[root@new-cluster-1 ~]# mv create_table.sql /home/hdfs/
[root@new-cluster-1 ~]# su hdfs
[hdfs@new-cluster-1 root]$ cd ~
[hdfs@new-cluster-1 ~]$ pwd
/home/hdfs
[hdfs@new-cluster-1 ~]$ ll -ht
total 8.0K
-rw-r--r--. 1 hdfs root 5.7K Aug 31 20:56 create_table.sql
[hdfs@new-cluster-1 ~]$ hive -f create_table.sql

完成。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章