跨集群拷贝Hive表元数据

功能说明

适用模块

离线开发

具体说明

通过下载原集群的Hive建表语句,生成hql文件,在新集群重新生成相同表结构。

使用示例

编辑导出Hive表建表语句脚本

#!/bin/bash
echo "==========start==========="
#库名
database=bdms_test
#导出库下所有表的表名用于遍历取出对应表的建表语句
table_names_file=/tmp/${database}_table_names.txt
#生成的结果sql文件
create_table_sql_file=/tmp/${database}_create_table_sql.hql
#取出库下的所有表,请替换下面样例中的hive-url(共两处)
beeline -u "jdbc:hive2://test.org:2182,test.org:2182,test.org:2182/;serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=hiveserver2;principal=hive/_HOST@TEST.COM" --showHeader=false --outputformat=csv2 -e "use $database;show tables;" > $table_names_file
#指定hive建表所在的数据库
echo "use $database ;" >> $create_table_sql_file
cat $table_names_file |awk -F "," '{ print $2}' | while read eachline
do
        echo "use $database ; show create table $eachline;"
        beeline -u "jdbc:hive2://test.org:2182,test.org:2182,test.org:2182/;serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=hiveserver2;principal=hive/_HOST@TEST.COM" --showHeader=false   --outputformat=csv2 -e "use $database ; show create table $eachline;" >> $create_table_sql_file
        echo ";" >> $create_table_sql_file
done

编辑创建Hive表脚本

#!/bin/sh
#请替换下面样例中的hive-url,和hql文件所放位置
beeline -u "jdbc:hive2://test.org:2182,test.org:2182,test.org:2182/;serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=hiveserver2;principal=hive/_HOST@TEST.COM" -f /tmp/bdms_test_create_table_sql.hql

使用方法(以导出为例)

1.在离线开发新建任务并在资源与配置处上传脚本文件。 INFO-跨集群拷贝Hive表元数据 - 图1 INFO-跨集群拷贝Hive表元数据 - 图2

2.添加Script节点,并指定上传的文件 INFO-跨集群拷贝Hive表元数据 - 图3

3.运行任务即可,运行完成后查看日志前往对应机器,下载hql文件。 INFO-跨集群拷贝Hive表元数据 - 图4

跨集群拷贝数据

可参考以下文档:

INFO-如何跨集群获取hive数据

Shell跨集群数据拷贝


作者:邓崃翔