关于数据调度的想法:
如果不使用其他的插件,就只使用python,可不可以实现日调度?
结果应该是可以的,目前为止,可以想到的解决方案如下:
1.利用python连接source(源端数据库)库和sink(目标数据库)库
2.中间的转换由Python来实现,其实就是在写入sink库的时候进行筛选、转换而已
3.连接source库后先取出需要进行日调度的表,以dt作为时间区分,因为是日调度,所以每次调度的都是前一天的数据,需要有一个字段作为区分数据是那一天的条件,在取数据时添加条件where dt = datetime()-1取前一天时间,这样就可以把数据取出。数据取出是按表进行取的,而且是循环进行,就可以减少人为参与程度
4.数据取出后需要进行对应的转换(转换也是以sql进行)
5.转换完毕后将数据写入sink
6.为了实现日调度,可以在外层写一个死循环while True,在死循环下执行,如果今天的调度跑完了,那么就让他time.sleep(10800),让程序休眠1天就可以了,第二天就可以正常进行新的调度
可能出现的问题:
1.数据量小还好,数据量如果大一点,维护起来会比较麻烦,异常也会比较多
2.连接时间过长,可能会出现连接自动断掉
3.数据写入速度会比较慢一些,
4.如果是行存储还好,如果是列存储,问题就会比较多,需要进行更多的转化,效率会比较低
优点:
1.一次调度出现问题有时间这个维度存在,倒也不用担心数据丢失
2.自己开发的,维护起来会更容易一些,因为对低层熟悉