气流-从Windows共享文件夹中检索文件?

时间:2018-07-16 13:35:37

标签: python airflow

从同一网络上Windows共享文件夹中获取文件的最佳方法是什么?

通常,我从SFTP,SalesForce或数据库表中提取数据,但是在某些情况下,最终用户需要将文件上传到必须检索的共享文件夹中。到目前为止,我的过程是在Windows计算机上运行脚本,该脚本仅捕获任何新的/更改的文件并将其加载到SFTP,但这并不理想。我无法在Airflow UI中监视它,我需要物理上更改该机器上的密码,映射的网络驱动器似乎坏了,等等。

有没有更好的方法?我宁愿ETL服务器处理所有这些事情。

  • 气流已安装在远程Linux服务器(同一网络)上
  • Windows文件夹只是人们可以根据其NT ID进行访问的标准UNC路径。这些用户正在保存我需要检索的文件。这些用户不是技术人员,不希望安装WinSCP通过SFTP或什至通过Sharepoint(我认为可以在其中使用Shareplum)共享数据。
  • 我想避免挂载这些文件夹,而是使用Python脚本简单地按照Airflow时间表复制我需要的文件
  • 最好将我的NT ID和密码保存在Airflow连接中以使用conn_id进行访问

1 个答案:

答案 0 :(得分:1)

如果我正确理解了这个问题,则说明您在本地计算机上安装了一个共享文件夹,而不是运行Airflow安装的Windows服务器。可以访问服务器上的共享文件夹吗?

我认为文件传感器可以解决您的用例。

如果可以将共享文件夹自动同步到S3之类的云文件存储,则可以使用常用的普通S3KeySensor和S3PrefixSensor。我认为这将简化您的解决方案,因为您不必担心正在运行任务的计算机是否可以访问该文件夹。

这是将Windows上的本地文件夹同步到S3的软件的两个示例。请注意,我还没有亲自使用它们。

也就是说,如果您无法将文件存储在云存储中,我认为使用FTPHook.retrieve_file是一个合理的解决方案。