记录一次TDH的inceptor导出建表语句和数据

TDH是星环公司的一款大数据组件聚合平台,类似于CDH,但是TDH将一些组件自己做了封装,比如hive重新封装成了inceptor,公司的TDH测试环境要下线,需要备份inceptor中的数据,现在分步做一次记录:

1.TDH的各个组件都是安装在docker容器的,命令行无法直接使用,我们需要在客户端界面下载TDH Client包,包取决于你安装的组件,意味着你每次添加或者删除组件都需要重新下载这个包;

下载客户端

2.将客户端上传到TDH随便一台服务器节点,解压;


将tar包解压缩为TDH-Client目录

3.进入解压缩的目录后,你安装的各个组件的命令行客户端便都可以看到了

TDH-Client目录结构

但是使用还要进入对应的目录,不方便,这里需要对客户端进行初始化,执行脚本

source /opt/software/TDH-Client/init.sh

注意这里必须使用source执行脚本,其他方式执行不起作用,执行完这个脚本我们便可以正常使用TDH的常用命令了;

4.inceptor的文档没具体介绍数据导出,但是我们可以类比于hive,毕竟他们算得上是一个东西,但是这里有一个小坑,hive是可以直接将数据导出到本地文件的,inceptor我试了一下,会报路径不匹配的错误,证明无法直接从hive导出到本地{当然也无法直接把本地数据直接导入到hive,但是他的文档里面说是可以,最初当如数据时了来回折腾。。。},这里我们先获取我们要导出hive库以及表名:

beeline -u jdbc:hive2://localhost:10000 -e "use awp;show tables;" > tables2.txt

命令执行完毕后vim  tables2.txt看一下,发现格式是这样的:

坑逼的格式

一脸懵逼,加上vim玩的也不溜,没有什么骚操作,最后乖乖的show tables;然后复制到windows,改巴改巴粘贴到tables.txt,到此表名获取到了→_→

5.接下来是获取建表语句,基本语句是show create table;在这个基础上编写简单脚本获取所有的表结构,脚本如下

#!/bin/bash

source /opt/software/TDH-Client/init.sh

#beeline -u jdbc:hive2://localhost:10000 -e "use awp;show tables;" > tables2.txt

cat tables2.txt|while read eachline

do

beeline -u jdbc:hive2://localhost:1000 -e "use awp;show create table $eachline" >>  tablesDDL.txt

echo ";" >> tablesDDL.txt

done

不过输出的格式请参照获取表名,太坑,后来还是将文件下载到windows各种Ctrl +R,最后搞定;

6.现在说一下前面说到的inceptor的小坑,由于他不可以直接将数据导出到local file,所以采用迂回的方式,先将数据导出到hdfs,在导出到本地,这里我们还是简单编写一个脚本:

#!/bin/bash

source /opt/software/TDH-Client/init.sh

cat tables2.txt|while read eachline

do

        beeline -u jdbc:hive2://localhost:10000  -e "INSERT OVERWRITE DIRECTORY '/tmp/hive/$eachline' ROW format delimited fields terminated BY '\t' SELECT * from awp.$eachline;"

done

将所有数据导出到hdfs的/tmp/hive的目录下;

7.最后通过hdfs dfs -get /tmp/hive  /root/      将文件下载到服务器的/root/目录下,然后将数据打包  tar -zcvf /root/hive  存储。

你可能感兴趣的:(记录一次TDH的inceptor导出建表语句和数据)