首字母缩写
我一直在努力寻找最好的选择,以便将ADLA U-SQL作业的输入数据存储在ADLS(第1代)或通用存储Blob容器中,并且一直在发现ADLA作业的提取物从ADLS读取时,性能糟糕。
对于一个测试,我将相同的数据集上传到ADLS Gen 1和一个通用的blob容器,并运行相同的ADLS U-SQL作业,但该作业只是在其输入数据的来源上有所不同。消除输入文件集(按日期)将输入集修剪为67个输入文件,总计1.59MB(是的,MB-该合成数据集中的许多小文件)
ADLA作业从ADLS(adl: or swebhdfs: protocols-几乎没有区别)或通用Blob存储(wasb: protocol)中获取数据。
从ADLS中,提取阶段花费了将近13分钟,而通用blob帐户仅花费了18秒。对于所有输入源,其余的工作时间几乎相同(如您所愿)。
当我的输入数据集位于ADLS而非通用存储帐户中时,我会看到这种程度的性能差异吗?
我的ADLA脚本看起来像这样-里面没有任何异国情调:
//General purpose blob wasb: protocol
DECLARE @InputPath = @"wasb://{container}@{account}.blob.core.windows.net/events/{date:yyyy}/{date:MM}/{date:dd}/{date:HH}_{*}";
//ADLS adl: protocol
//DECLARE @InputPath = @"adl://{adls-account}.azuredatalakestore.net/events/{date:yyyy}/{date:MM}/{date:dd}/{date:HH}_{*}";
//ADLS swebhdfs: protocol
//DECLARE @InputPath = @"swebhdfs://{adls-account}.azuredatalakestore.net/events/{date:yyyy}/{date:MM}/{date:dd}/{date:HH}_{*}";
DECLARE @StartDate = DateTime.Parse("2018-02-25T00:00:00+00:00");
DECLARE @EndDate = DateTime.Parse("2018-02-27T23:59:59+00:00");
@tsvArchiveRecords =
EXTRACT
TenantId int?,
UserId long?,
// Snip more fields for brevity
date DateTime //virtual column
FROM @InputPath
USING Extractors.Tsv(skipFirstNRows: 1);
@logs =
SELECT TenantId,
UserId,
// Snip more fields for brevity
FROM @tsvArchiveRecords
WHERE date BETWEEN @StartDate AND @EndDate;
//snip more processing and outputs for brevity