适用模块

    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

    作者:李云龙