• 欢迎关注微信公众号:九万里大数据
  • 请使用Ctrl+D收藏本站到书签栏
  • 手机也可访问本站 jwldata.com

Hive视图的导出与导入

大数据技术 九万里大数据 2年前 (2021-06-30) 654次浏览 0个评论 扫描二维码
文章目录[隐藏]

低版本的Hive不支持SHOW VIEWS命令,如果只想迁移Hive视图,需要先从Hive Metastore库里取出视图名,然后通过hive beeline来获取Hive视图的建表语句。

关于SHOW VIEWS命令的讨论:https://stackoverflow.com/questions/22295961/hiveql-query-to-list-only-the-views

对于Hive全量表(不区分表和视图)的导出与导入可以参见 https://www.jwldata.com/archives/41.html

导出所有的hive库

#!/bin/bash
# 1-export_database.sh

dir="output/database"

if [ ! -d ${dir} ]; then
        mkdir -p ${dir}
fi
beeline -u 'jdbc:hive2://hive01:10000/default' --silent=true --outputformat=tsv2 --showHeader=false -e "show databases" > ${dir}/databases.txt

导出库的所有hive视图

#!/bin/bash
# 2-export_view.sh

# Hive Metastore的mysql库信息
db_host=X.X.X.X
db_user=xx
db_pass=xx
db_name=xx

for database in `cat output/database/databases.txt`
do
dir="output/table"
if [ ! -d ${dir} ]; then
        mkdir -p ${dir}
fi

mysql -h${db_host} -u${db_user} -p${db_pass} -D${db_name} -sN -e "select TBL_NAME from TBLS where TBL_TYPE = 'VIRTUAL_VIEW' and DB_ID = (select DB_ID from DBS where NAME = '${database}')" > ${dir}/${database}_tables.txt
sed -i "s|^|${database}.|g" ${dir}/${database}_tables.txt
done

导出所有hive表的建表语句

#!/bin/bash
# 3-export_create_table.sh
for database in `cat output/database/databases.txt`
do
dir="output/create/${database}"
if [ ! -d ${dir} ]; then
        mkdir -p ${dir}
fi
    for tablename in `cat output/table/${database}_tables.txt`
    do
    beeline -u 'jdbc:hive2://hive01:10000/default' --silent=true --outputformat=tsv2 --showHeader=false -e "show create table ${tablename}" > ${dir}/${tablename}.txt
    done
done

导入hive表

比如将hive视图导入到带kerberos认证的hive集群。

#!/bin/bash
# 5-load_table.sh
for database in `cat output/database/databases.txt`
do
    for tablename in `ls output/create/${database}/*.txt`
    do
    echo "load ${tablename}"
    beeline -u 'jdbc:hive2://centos01:10000/default;principal=hive/_HOST@CENTOS' --silent=true --outputformat=tsv2 --showHeader=false -f ${tablename}
    echo ""
    done
done

启停脚本

任务启动脚本

#!/bin/bash
# load_start.sh

nohup /bin/bash /root/export_hive_view/5-load_table.sh 2>&1 >> load_stdout.log &

如果需要把标准输出和标准错误写到不同的日志文件里,可以改成
nohup /bin/bash /root/export_hive_view/5-load_table.sh 2>> load_stderr.log 1>> load_stdout.log &

任务停止脚本

#!/bin/bash
# load_stop.sh

ps -ef | grep "5-load_table.sh" | grep -v grep | awk '{print $2}' | xargs kill -9
chmod u+x load_start.sh
chmod u+x load_stop.sh

执行导出和导入

./load_start.sh
tail -f load_stdout.log

欢迎关注我的微信公众号“九万里大数据”,原创技术文章第一时间推送。
欢迎访问原创技术博客网站 jwldata.com,排版更清晰,阅读更爽快。


Hive视图的导出与导入
 


本站文章,如未注明,均为原创 | 原创文章版权归九万里大数据所有,未经许可不得转载。
本文链接:Hive视图的导出与导入
喜欢 (0)

您必须 登录 才能发表评论!