我有以下问题。我需要从ADLS(Azure数据湖存储)源复制到接收器ADLS,但只能复制最新的文件。每小时,到达源.csv文件,此文件必须复制到接收器数据湖。例如:
事件:Hour1 - file_01.csv到达源。 任务:将file_01.csv复制到sink数据库。 event:Hour2 - file_02.csv到达源头。 任务:将file_02.csv复制到sink数据湖。等等。
无论如何都要创建一个基于事件的触发器(新文件到达源中)?这是我的第一个想法。
另一种方法是创建一个由Azure Data湖分析运行的作业。在那里,我将提取系统日期&时间(我不知道该怎么做)。选择最新文件,然后将该文件复制到接收器数据湖中。如何使用u-sql声明包含日期和时间的变量?如何使用u-sql将数据复制到数据湖?
总结:如何在数据湖之间制作增量/更新副本?
由于
答案 0 :(得分:1)
不幸的是,ADLS目前没有办法在文件到达时触发事件。话虽如此,我们正在努力提供这种支持,并且很快就会提供。
要执行增量复制,您可以执行诸如将文件组织到包含时间信息的文件夹中的操作。然后使用Azure Data Factory等工具仅复制特定当前时间范围内的文件。
谢谢, 萨钦谢思 Azure Data Lake项目经理。
答案 1 :(得分:0)
您可以使用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);
我请商店团队成员回答有关文件触发器的问题。