DEMO-通过数据地图openapi接口查询哪些表没开启impala同步

适用模块
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

作者:李云龙