azure - 使用逻辑应用将 n 个文件从 Azure Datalake 复制到 SFTP 位置
问题描述
我有一个场景
——我在 Azure Datalake 中有一些文件。一项工作正在将这些文件推送到 ADLS 位置。
此文件需要作为输入数据上传到 SFTP 位置。
应用程序将使用此输入文件并执行一些操作,然后将处理后的数据作为输出文件保存在同一 SFTP 位置的输出目录中。
在逻辑应用程序的帮助下,我想将此输出文件上传到 ADLS 位置。
使用此输入文件的应用程序有一些限制 - 它一次不能使用超过 10000 条记录。即如果我的源文件有超过 10000 条记录,那么我必须将其拆分为多个文件(取决于行数),然后我必须将这些文件复制到 SFTP 位置。必须以这样的方式执行此复制,而不是在完成一项作业后才应在 SFTP 位置复制另一个文件。
将我想要使用的文件上传到 Azure 逻辑应用。
根据我到目前为止的理解,Azure 逻辑应用程序没有提供任何触发器来测试“添加或修改的文件”ADLS 位置,但逻辑应用程序具有类似类型的 blob 存储功能,因此我决定使用 blob 容器。
将原始文件上传到 ADLS 位置后,我会将文件上传到 blob 位置,因为我的逻辑应用程序会不断轮询此特定目录,因此每当有任何新文件立即到达时,它都会通过逻辑应用程序触发文件复制作业。
现在的问题 -
我的 ADLS 目录可能有一个或多个文件。
如何在逻辑应用中创建复制活动以将这些文件复制到 SFTP 位置。如何确定 ADLS 目录中有多少csv类型文件可用,以便我的逻辑应用决定复制文件的迭代次数。
提前致谢。
解决方案
您可以在 ADLS 上使用列表文件操作。
此操作的输出记录在此处 - https://docs.microsoft.com/en-us/connectors/azuredatalake/#folderresponse
这基本上是一个文件状态类对象的数组。您可以遍历该数组并从状态对象中提取信息,并使用它将数据复制到您想要的任何位置。
FileStatus 有信息 -
表 14 名称路径类型 描述 文件名路径后缀字符串
文件或文件夹名称。
Type type string
项目的类型(目录或文件)。
块大小 blockSize 整数 文件夹或文件的块大小。
访问时间 accessTime 整数 上次访问项目的 Unix(纪元)时间。
修改时间 modifyTime integer 上次修改项目的 Unix (Epoch) 时间。
样本 LA 看起来像 -
推荐阅读
- python - 如何通过 Postman 获取 XML 格式的 POST 请求正文作为 Flask 中的字典?
- git - 如何检测*合并提交*是否已经在分支中被选中?
- wordpress - 我试图在 wordpress 中创建基于令牌的身份验证
- python - Django在基于foreginKey值的模板中使用条件?
- azure - 尝试推送到 Azure 容器实例时出现 Docker Compose 错误
- python - 使用机器学习模型进行推理时如何使用 UUID?
- python - Cron 无法通过 Python 找到 selenium 的 Chromedriver 的可执行路径
- c - 在定义和声明之间混合使用静态、外部和内联关键字
- sql - 雪花中“当与源不匹配时删除”的合并等效项是什么?
- sql - 'Unpivoting' 一个 SQL 表 - 更新