【问题标题】:I need to get file last modified dates of Data Lake files in SSIS我需要在 SSIS 中获取数据湖文件的文件最后修改日期
【发布时间】:2019-07-24 13:41:50
【问题描述】:

我有一个 SSIS 任务,它从 Azure Data Lake 读取 JSON 文件,使用脚本任务中的反序列化命令对其进行解析,并将它们的副本创建为本地 SQL Server 中的表。

这进展顺利,但速度很慢。导入一个目录需要6个小时,而且有很多。

所以我决定以渐进的方式制作它。

起初,我使用条件拆分来避免将旧记录写入本地 SQL 服务器,但这仍然涉及读取整个文件的时间成本。条件拆分是一个有趣的组件,我观察到它只是无缘无故地跳过了一些记录。不好。

那么,为什么不直接跳过我之前导入的整个文件呢?但为此,我需要获取我正在处理的文件的最后修改日期。

现在我知道有一些 .Net 方法可以在纯 c# (Filesystem operations on Azure Data Lake Storage Gen1 using .NET SDK) 中执行此操作,但由于我使用的是 SSIS 的脚本组件,因此我已经与 Data Lake 建立了有效连接。应该更容易吧?

但我找不到方法,感谢这里的任何指导。

干杯

【问题讨论】:

    标签: c# ssis azure-data-lake data-lake


    【解决方案1】:

    如果您尝试使用 Data Lake Store task within SSIS 按修改日期对文件进行排序,您将不会很幸运地过滤您按修改日期加载的文件 - 它没有那种意识。

    如果您通过脚本任务将数据拉入 SSIS,那么您的状态会更好。您可以使用 SDK,也可以通过标准 REST API。 REST API 使用 HDFS REST spechttps://<yourstorename>.azuredatalakestore.net/webhdfs/v1/mytempdir/myinputfile.txt?op=GETFILESTATUS 会像 SDK 一样返回修改后的时间戳。

    在坚持使用 SSIS 数据存储源的同时,您也许可以将两者结合起来获得类似的结果 - 使用带有条件的脚本任务来确定源及其下游是否应该运行。不过,这取决于您的包的架构方式。

    【讨论】:

      猜你喜欢
      • 2019-02-26
      • 2012-07-07
      • 2011-05-20
      • 1970-01-01
      • 2010-09-17
      • 1970-01-01
      • 2012-03-11
      • 1970-01-01
      相关资源
      最近更新 更多