前期提要
在我的上一篇博客的结尾我给大家留了一个问题,就是作为一个下游系统如何进行数据文件和控制文件的传输数据操作,相信很多做个etl的同学都会,在这里我讲一下我们项目中我的设计思想。
本章重点
我们项目中需要的数据文件是需要从ODS系统或者源系统进行下发的,中间用到的传输工具就是东方通,这个工具可以把数据文件从ODS系统或者源系统传送数据文件到东方通服务器上然后将数据文件转发到我们的etl服务器上,以上这些不需要我们考虑太多,我们需要想的是数据文件到我们的服务器上的一个特定路径下了我们怎么把这些数据文件准实时的发送到我们程序的服务器上呢(此处有可能是同一个服务器的两个目录,这都不重要),目前我采用的方法是写了一个python程序,思路是通过配置文件生成一个需要ODS系统或者源系统给我们传数的数据文件列表(日频度的写一个配置,月频度的写一个配置),然后循环这个列表中的每一项在下发路径中找一下该数据文件是否已经传输过来,如果已经传输过来了就比对一下数据文件和控制文件的数据条数(此处如果是数据文件太大的话建议用shell的wc命令能够更快的实现,同学们可以私底下试一试获取数据文件条数最快的方式,百度上有测评但是和实际中的情况不太一样),这里还需要注意一下如果上游系统给的文件的顺序是先给控制文件再给数据文件的话,咱们传输的顺序是先传数据文件再传控制文件,因为控制文件比较小瞬间就传过来了,这时候就可以将数据文件和控制文件通过mv或者scp的方式传送到相应的路径下了,同时结果列表中删除这一个,如果数据文件和控制文件没有到或者两个没有比对上那就一直循环直到上游系统处理,这样每天就可以实现数据文件的传输了,简单吗?
总结
本次我们讲的是数据文件传数的程序具体应该怎么写,有一个问题和大家讨论下,如何规定传数程序的执行时间?欢迎大家在留言区和我分享你的想法。