首页 > 解决方案 > 使用逻辑应用将 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类型文件可用,以便我的逻辑应用决定复制文件的迭代次数。

提前致谢。

标签: azureazure-logic-appsazure-data-lakeazure-cloud-services

解决方案


您可以在 ADLS 上使用列表文件操作。

此操作的输出记录在此处 - https://docs.microsoft.com/en-us/connectors/azuredatalake/#folderresponse

这基本上是一个文件状态类对象的数组。您可以遍历该数组并从状态对象中提取信息,并使用它将数据复制到您想要的任何位置。

FileStatus 有信息 -

表 14 名称路径类型 描述 文件名路径后缀字符串
文件或文件夹名称。

Type type string
项目的类型(目录或文件)。

块大小 blockSize 整数 文件夹或文件的块大小。

访问时间 accessTime 整数 上次访问项目的 Unix(纪元)时间。

修改时间 modifyTime integer 上次修改项目的 Unix (Epoch) 时间。

样本 LA 看起来像 -

在此处输入图像描述


推荐阅读