使用 Kiba 作为文件批处理的最佳实践

Best practice for using Kiba as a batch process on files

我们想 运行 Kiba 作为一系列文件的批处理。提供文件掩码、从 FTP 下载文件,然后 运行 每个文件的 ETL 作业,在每个文件的基础上发送成功或失败通知的最佳结构是什么?

有没有办法从 Kiba 内部执行此操作,或者最好的做法是只在外部处理所有非 ETL 内容,然后在每个文件上调用 kiba?

我最初会从最简单的事情开始,就像你说的那样,使用外部文件然后在每个文件上调用 Kiba。例如。 :

  • 构建一个 rake 任务以在本地下载文件(并将它们从 FTP 中删除,或者至少将它们移动到一个单独的文件夹以避免双重处理),在一个众所周知的文件夹中充当收件箱。有关如何执行此操作的有趣链接,请参阅 here
  • 然后构建另一个 rake 任务以遍历收件箱文件夹并处理给定文件(使用 Dir[pattern].each)。

确保使用如下助手:

def system!(command)
  fail "Command #{command} failed" unless system(command)
end

确保在进行系统调用时检测到执行失败。

对于您的 ETL 文件本身,您将使用一个 at_exit 块来捕获失败并相应地发出通知(参见此处的示例 Bugsnag,以及一个 post_process 块来捕获成功和在这种情况下通知。

这肯定有效而且很简单,也就是说还有其他可能性,例如单个 ETL 文件将在 pre_process 块中下载文件,然后有一个源每次下载都会产生一个文件名文件,也许是一个本身可以在命令行上调用 kiba 的转换,或者更高级的解决方案。

我会一如既往地坚持使用最简单的解决方案!