增量抽取到hive过程中的监控

本文介绍了在Hive中进行增量数据抽取的过程,重点聚焦于如何利用分区字段`ds`进行常规增量处理,以及根据创建和更新时间进行数据抽取。内容涵盖了监控策略和json文件与表名的对应关系。
摘要由CSDN通过智能技术生成

前提:分区字段统一为ds,适用于常规增量抽取,通过创建和更新时间抽取。

 

#!/bin/bash
# 适用于常规增量抽取,通过创建和更新时间抽取
# 手工填写以下参数:
# 分区表达式,hive语法:pt_expr
# 主键字段,联合主键写id1,id2,id3:pk
# 非分区表增量数据量阈值,分区表不用管:inc_cnt

set -e 
timer_start=`date "+%Y-%m-%d %H:%M:%S"`

timediff(){
    duration=$(($(date +%s -d "${3} ${4}") - $(date +%s -d "${1} ${2}")))
    echo "开始时间:${1} ${2}"
    echo "结束时间:${3} ${4}"
    if [[ $duration -lt 60 ]]
        then echo "执行耗时:${duration}s"
    elif [[ $duration -lt $((60*60)) ]]
        then m=$(($duration/60))
             s=$(($duration%60))
             echo "执行耗时:${m}m${s}s"
    else h=$(($duration/60/60))
         m=$(($(($duration%3600))/60))
         s=$(($duration%60))
         echo "执行耗时:${h}h${m}m${s}s"
    fi
}
file_name=`basename $0`
table_name=${file_name%.sh}
tmp_name=${table_name/#ods_/tmp_}
json_name=${table_name}.json
# sql_name=${file_name%.sh}.sql
dir_path=`dirname $0`
# 分区表达式,hive语法
pt_expr="substr(issuedate,1,10)"
# 主键字段,联合主键写id1,id2,id3
pk='id' 
# 非分区表增量数据量阈值,分区表不用管
inc_cnt=0
cd $dir_path

# 1、建临时表装增量数据; 
echo "判断是否分区,定增量阈值"
is_pt=`hive -e "desc bigdata_ods.${table_name}"|grep -e '^# Partition Information'|wc -l`

if [[ $is_pt == 0 ]]; then
    #statements
    thr_cnt=$inc_cnt
    echo "增量阈值:$thr_cnt"
    echo "创建临时表:drop table if exists bigdata_tmp.${tmp_name};create table bigdata_tmp.${tmp_name} like bigdata_ods.${table_name};alter table bigdata_tmp.${tmp_name} set SERDEPROPERTIES('field.delim'='\001')"
    hive -e "drop table if exists bigdata_tmp.${tmp_name};create table bigdata_t
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值