繁体   English   中英

Azure数据工厂仅从Blob存储中检索新的Blob文件

[英]Azure Data Factory Only Retrieve New Blob files from Blob Storage

我目前正在将Blob文件从Azure Blob存储复制到Azure SQL数据库。 它计划每15分钟运行一次,但是每次运行它都会重复导入所有blob文件。 我想对其进行配置,以使其仅在任何新文件到达Blob存储中时才导入。 要注意的一件事是文件没有日期时间戳。 所有文件都存在于单个Blob容器中。 新文件将添加到相同的Blob容器中。 你知道如何配置吗?

我想在这个答案的开头加上您的方法可能会有所变化...

鉴于您所描述的,您在选择权上相当有限。 一种方法是让计划的作业了解已存储在SQL数据库中的内容。 您遍历容器中的所有项目,并检查容器是否已处理。

容器有一个ListBlobs方法可以解决这个问题。 参考: https : //azure.microsoft.com/en-us/documentation/articles/storage-dotnet-how-to-use-blobs/

foreach (var item in container.ListBlobs(null, true))
{
   // Check if it has already been processed or not
}

请注意,此方法可能会引起容器中斑点的数量。 如果太大,请考虑每小时/每天/每周/等创建一个新容器来容纳blob,前提是您可以控制它。

请使用CloudBlobContainer。 ListBlobs (null,true, BlobListingDetails .Metadata)并检查CloudBlob。 属性 每个列出的Blob的LastModified

我将使用Azure Data Factory中的自定义DotNet活动而不是复制活动,并使用Blob存储API(此处的某些答案描述了此API的用法)和Azure SQL API仅执行新文件的副本。

但是,随着时间的流逝,您的Blob位置将有很多文件,因此,希望您的工作将开始花费越来越长的时间(一个点花费的时间超过15分钟),因为它将每次遍历每个文件。

您能否进一步说明您的情况? 您是否有理由要每15分钟将数据添加到SQL表中? 您可以增加它以每小时复制一次数据吗? 另外,这些数据如何进入Blob存储? 是另一个Azure服务将其放置在那里还是外部应用程序? 如果这是另一项服务,请考虑将其直接移到Azure SQL中,并切断Blob存储。

另一个建议是创建间隔为15分钟的文件夹,例如hhmm。 因此,例如,示例文件夹将被称为“ 0515”。 您甚至可以为年,月和日创建一个父文件夹。 这样,您可以将数据插入Blob存储中的这些文件夹中。 Data Factory能够读取日期和时间文件夹,并标识进入日期/时间文件夹的新文件。

我希望这有帮助! 如果您可以提供有关您的问题的更多信息,我们很乐意为您提供进一步的帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM