DEMO-通过数据地图openapi接口查询哪些表没开启impala同步
更新时间: 2024-03-11 02:46:04
阅读 956
适用模块
openapi、数据地图
具体说明
前提:
先根据faq教学,能正常调用openapi;
faq地址如下:https://study.sf.163.com/documents/read/service_support/dsc-p-a-0116
用户想查hive表详情,看哪些表没有开impala同步,但目前该信息无法直接检索并列出来,只能一个表一个表的查,所以产出此脚本。
用户通过执行此脚本,可以列出哪些表没有开impala同步,并将详细信息写入json文件,用户也可直接对son文件进行分析处理统计,详细信息记录在注释,用户也可通过此批量检索脚本衍生其他脚本,批量检索表详情的其他信息所涉及表、通过传参控制检索指定表详细信息。
使用示例
#!/bin/sh
#查询metahub数据库获取表相关信息,主要获取【项目名,库名,表名,表负责人】且无dev库,输出到/tmp/tablelist,文件名可以随便换
mysql -h xxx.xxx.xxx.xxx -uXXX -pXXX -e "
select
dbmeta.meta_value as product,
tblmeta.db,
tblmeta.tbl,
tblmeta.meta_value as user
from
easymetahub.music_metahubtablemetadata tblmeta
join easymetahub.music_metahubdatabasemetadata dbmeta on tblmeta.db = dbmeta.db
and tblmeta.catalog = dbmeta.catalog
where
tblmeta.meta_key = 'metahub.table.owner'
and tblmeta.catalog = 'easyops-cluster_hive_catalog'
and dbmeta.meta_key = 'metahub.db.account'
and tblmeta.db not like '%dev';
;" > /tmp/result
#去表头
cat /tmp/result | tail -n +2 > /tmp/tablelist
#默认hive数据源 id=1
datasourceId=1
#记录请求次数
checkcount=0
#统计涉及表数量
linecount=`cat /tmp/tablelist |wc -l |cut -d " " -f 1`
while read product db table user
do
#openapi 鉴权
authType='AKSK'
accessKey='1ab2c19b98804cc88e5834cbc39a00ba'
secretKey='bb1b45afb4eb4d299fe7482b6cf8025f'
timestamp=`date +%s`000
sig=`echo -n "${secretKey}${timestamp}" | md5sum |cut -d " " -f 1`
json_data="{\"authType\":\"AKSK\",\"accessKey\":\"${accessKey}\",\"timestamp\":\"${timestamp}\",\"sig\":\"${sig}\",
\"datasourceId\":\"${datasourceId}\",\"db\":\"${db}\",\"table\":\"${table}\",\"product\":\"${product}\",\"user\":\"${user}\"}"
#执行表详情检索请求 其中IP:PORT 换成当前环境easyops页面中openapi的quickurls导出值
data=`curl -X POST -H "content-Type:application/json" -d "${json_data}" http://ip:port/openapi/easydmap/table/v1/info/get`
#将结果写到以表名命名的文件中,一张表一个文件【项目名-库名.表名.json】
echo ${data} > /tmp/curlresult/${product}-${db}.${table}.json
checkcount=$(($checkcount + 1))
echo "当前已经查询:"$checkcount"次;共:"$linecount"次"
echo ""
echo ""
done < /tmp/tablelist
#检索想要的关键信息,可以将涉及的表筛选出来,并输出到指定文件
grep '"impalaSync":false' /tmp/curlresult/* > /tmp/finalresult
作者:李云龙
文档反馈
以上内容对您是否有帮助?