我有U-SQL脚本,它使用文件模式在Azure Data Lake中查找文件并从中提取一些数据:
DECLARE @input_file string = @"\data\{*}\{*}\{*}.avro";
@data = EXTRACT
Column1 string,
Column2 double
FROM @input_file
USING new MyExtractors.AvroExtractor();
文件模式是:
data/{Namespace}-{EventHub}-{PartitionId}/{Year}-{Month}-{Day}/{Hour}-{Minute}-{Second}
Problem :自定义提取器执行速度很慢 . 我在Data Lake中有很多文件,处理需要15个小时,每次运行需要600美元 . 太慢而且太贵了 .
我只需要从不超过90天的文件中提取新数据 . 如何使用文件模式,文件日期修改或任何其他技术过滤掉旧文件?
2 回答
您可以利用Azure数据工厂中的GetMetadata活动来检索文件的lastModifiedTime .
参考文献:Get metadata activity in Azure Data Factory
还有一篇关于增量复制的相关文章:
Azure data factory | incremental data load from SFTP to Blob
您可以使用
DateTime.Now
的.AddDays
方法,尽管这实际上是否过滤掉了所有文件(我认为)取决于您的自定义提取器,例如在我使用.Csv进行的简单测试中,这有助于将输入流从4个流减少到3个,但如上所述,我不确定这是否适用于您的自定义提取器 .