【问题标题】:Copy data using data lake analytics - U-SQL使用数据湖分析复制数据 - U-SQL
【发布时间】:2018-10-02 17:51:47
【问题描述】:

我有以下问题。我需要从 ADLS(Azure 数据湖存储)源复制到接收器 ADLS,但只需要最新的文件。每小时,一个 .csv 文件到达源,该文件必须复制到接收器数据湖。例如:

事件:Hour1 - file_01.csv 到达源。 任务:将 file_01.csv 复制到接收数据湖。 事件:Hour2 - file_02.csv 到达源。 任务:将 file_02.csv 复制到接收数据湖。以此类推。

是否有创建基于事件的触发器(源中新文件的到达)?这是我的第一个想法。

另一种方法是创建一个由 Azure 数据湖分析运行的作业。在那里我会提取系统日期和时间(我不知道该怎么做)。选择最新的文件,然后将该文件复制到接收器数据湖中。如何使用 u-sql 声明包含日期和时间的变量?如何使用 u-sql 将数据复制到数据湖中?

总结:如何在数据湖之间制作增量/更新副本?

谢谢

【问题讨论】:

    标签: azure azure-data-lake u-sql


    【解决方案1】:

    不幸的是,ADLS 目前没有一种方法可以在文件到达时触发事件。话虽如此,我们正在努力提供这种支持,并且应该很快就会提供。

    要进行增量复制,您可以将文件组织到包含时间信息的文件夹中。然后使用 Azure 数据工厂等工具仅复制当前特定时间范围内的文件。

    谢谢, 萨钦谢斯 Azure 数据湖项目经理。

    【讨论】:

      【解决方案2】:

      您可以使用DateTime.Now 来获取作业的编译时间。您还可以提取文件的修改或创建时间。例如:

      @data = 
        EXTRACT 
          vehicle_id int
        , entry_id long
        , event_date DateTime
        , latitude float
        , longitude float
        , speed int
        , direction string
        , trip_id int?
        , modified_date = FILE.MODIFIED()
        , created_date = FILE.CREATED()
        FROM "/Samples/Data/AmbulanceData/vehicle{*}"
        USING Extractors.Csv();
      
      @res =
        SELECT *
        FROM @data
        WHERE created_date <= DateTime.Now.AddDays(-1);
      

      我请商店团队成员回答您有关文件触发器的问题。

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-23
      相关资源
      最近更新 更多