线上操作须谨慎!!!

线上操作须谨慎!!!记录一次有关动态分区导致的bug

问题描述

记录一次线上bug。bug引起的原因很简单,就是对数仓门店维表新增字段的时候,把新增字段放在最后面,因为我们采取的是动态分区的方式,默认以最后一个字段作为分区字段,程序在第二天执行的时候使本来分区的数据存在了脏分区内。正常分区没有数据,关键是程序正常执行,并没有触发报警机制。所以悲剧就这样酿成了。。。。导致相关下游,包括报表,模型,算法,以及维度相关的应用大批量的空数据或者直接报错。

问题复盘

至于后期怎么处理的,无非是重跑分区,下游任务做重跑,只是影响已经产生了。此次我们关键讲下怎么在程序方面预防这个问题:

  1. 首先我们这边开发个任务,给关键任务配置下游依赖,判断该关键任务产生的表的当前分区是否有数据。
  2. 将目前部分任务由动态分区改为静态分区,这样无须考虑分区字段的位置,降低出错的可能,同时限制小分区的个数改为distribute by cast(rand() * 1 as int)。
  3. 针对动态分区的任务,overwrite前写加一层统一逻辑判断,判断动态分区字段是否在表的最后一列。
  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值