【发布时间】:2017-11-16 00:02:21
【问题描述】:
我的第一个直觉反应是 Luigi 不适合这种事情,但我想要“管道”功能,一切都让我回到 Luigi/Airflow。我不能使用 Airflow,因为它是 Windows 环境。
我的用例:
所以目前在我的“源”文件夹中,我们有大约 20 台机器可以生成 XML 数据。随着时间的推移,某些进程会不断地将这些文件放入每台机器上的文件夹中(其日志数据)。在任何一天,这些机器的文件夹中可能有 0 个文件,或者它可能有 100k+ 个文件(每台机器)。最终有人会去删除所有的文件。
此过程的一部分是监视所有这些机器上的所有这些目录,如果文件是新的,则将它们复制到存档文件夹中。
我当前的进程每 5 分钟列出每台机器上的所有文件,获取文件列表并循环检查源文件是否在目的地可用。如果目的地不存在则复制,如果存在则跳过。
Luigi 似乎只想在其输出和/或目标中使用“a”(单数)文件。问题是,我可能会显示 1 个新文件或数千个文件。
在整个过程中都会发生同样的问题。我的管道的下一步是将文件及其元数据信息(大小、文件名、目录位置)添加到数据库记录中。此时,另一个进程读取所有元数据记录行并将它们放入 XML 日志数据的内容提取表中。
路易吉甚至适合这样的事情吗? Luigi 似乎想处理一件事,做一些工作,然后将这些信息发送到另一个文件中。
【问题讨论】: