INFO-跨集群拷贝Hive表元数据
更新时间: 2024-09-13 09:32:03
阅读 1176
INFO-跨集群拷贝Hive表元数据
适用模块
离线开发具体说明
通过下载原集群的Hive建表语句,生成hql文件,在新集群重新生成相同表结构。使用示例
场景一、离线开发shell节点导出DDL#!/bin/bash
echo "==========start==========="
#库名
database=das_ods
#导出库下所有表的表名用于遍历取出对应表的建表语句
table_names_file=/tmp/"$database"_table_names.txt
#生成的结果sql文件
create_table_sql_file=/tmp/"$database"_create_table_sql.hql
echo $create_table_sql_file
#取出库下的所有表,请替换下面样例中的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
source $HADOOP_CONF_DIR/hadoop-env.sh
$HADOOP_HOME/bin/hdfs dfs -put $create_table_sql_file /user/bdms_admin.mammut/
场景二、离线开发script节点导出DDL#!/bin/bash
echo "==========start==========="
#库名
database=das_ods
#导出库下所有表的表名用于遍历取出对应表的建表语句
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
source $HADOOP_CONF_DIR/hadoop-env.sh
$HADOOP_HOME/bin/hdfs dfs -put $create_table_sql_file /user/bdms_admin.mammut/
数据管理-个人文件下查找导出文件
#!/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.在离线开发新建任务并在资源与配置处上传脚本文件。
2.添加Script节点,并指定上传的文件
3.运行任务即可,运行完成后查看对应hdfs目录,下载hql文件。
### 跨集群拷贝数据
可参考以下文档:
INFO-如何跨集群获取hive数据
Shell跨集群数据拷贝
作者:邓崃翔
文档反馈
以上内容对您是否有帮助?