使用PyODPS节点监测SDK上传数据的完成节点

本文介绍了如何使用PyODPS SDK创建监控任务,确保MongoDB数据上传至ODPS完成后,触发DataWorks任务链。文章详细阐述了解决方案,包括在监控表中记录状态,以及在Python脚本中检查分区存在的方法,以避免因数据未上传完毕就开始执行后续任务导致的错误。同时,作者还遇到了可能的阿里云BUG,即自定义参数在不同场景下执行结果不一致的问题。
摘要由CSDN通过智能技术生成

一、前言

一直以来公司都有个痛点亟待解决。分库分表的MongoDB上传数据至ODPS,于是就有了一套利用tunnel java sdk上传数据的服务。但是上传完数据后DataWorks上的任务链依赖如何开始传递,一直没有解决。
老办法是打时间差,按照一般上传耗时3个小时计算,所有任务的起点都配置在凌晨4点开始,这在大多数时候都能生效,但在一些流量特别大的日子就会异常,数据没传完,但任务已经开始执行了,导致执行的结果都是错的。
所以,需要有个任务能够嗅探数据已经传输完毕,后续的任务都依赖这个嗅探任务。

二、解决方案

首先,新增一张表用作监控。

CREATE TABLE `one_day_monitor` (
	`flag` BIGINT
)
PARTITIONED BY (
	pt STRING COMMENT 'yyyymmdd'
)
LIFECYCLE 37000;

在正常传输完整数据后,在这张监控表里写一条记录,令当天分区的flag = 1。之后的操作就围绕这个1来进行。


终于来到标题内容,创建一个PyODPS节点,过程不赘述了。
先贴代码:

import time
t = o.get_table('one_day_monitor',project=
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值