我有以下问题。我需要从ADLS(Azure数据湖存储)源复制到接收器ADLS,但只复制最新的文件。每小时,到达源的一个.csv文件,这个文件必须被复制到宿数据湖。例如:
event: Hour1 - file_01.csv到达源。任务:复制file_01.csv以接收数据湖。event: Hour2 - file_02.csv到达源。任务:复制file_02.csv以接收数据湖。诸若此类。
有没有办法创建一个基于事件的触发器(新文件到达源代码)?这是我的第一个想法。
另一种方法是创建一个作业,由Azure Data lake analytics运行。在那里我会提取系统的日期和时间(我不知道怎么做)。选择最新的文件,并将该文件复制到接收器数据湖中。如何使用u-sql声明包含日期和时间的变量?如何使用u-sql将数据复制到数据湖中?
摘要:如何在数据湖之间创建增量/更新副本?
谢谢
发布于 2018-04-24 22:59:33
不幸的是,ADLS目前没有一种方法可以在文件到达时触发事件。话虽如此,我们正在努力提供这种支持,应该很快就会提供。
要执行增量复制,您可以将文件组织到包含时间信息的文件夹中。然后使用Azure Data Factory等工具仅复制当前特定时间范围内的文件。
谢谢,Azure Data Lake的Sachin Sheth项目经理。
发布于 2018-04-24 01:37:03
您可以使用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);
我请商店团队成员回答您关于文件触发器的问题。
https://stackoverflow.com/questions/49968294
复制相似问题