首页 文章

使用数据湖分析复制数据 - U-SQL

提问于
浏览
0

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

event:Hour1 - file_01.csv到达源 . 任务:将file_01.csv复制到sink数据库 . event:Hour2 - file_02.csv到达源头 . 任务:将file_02.csv复制到sink数据湖 . 等等 .

无论如何都要创建一个基于事件的触发器(新文件到达源中)?这是我的第一个念头 .

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

简介:如何在数据湖之间创建增量/更新副本?

谢谢

2 回答

  • 0

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

    要进行增量复制,您可以执行诸如将文件组织到包含时间信息的文件夹中的操作 . 然后使用Azure Data Factory等工具仅复制特定当前时间范围内的文件 .

    谢谢,Azure Data Lake的Sachin Sheth项目经理 .

  • 1

    您可以使用 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);
    

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

相关问题