0

我有一个 U-SQL 作业,它从 2 个 .tsv 和 2 个 .csv 文件中提取数据,选择一些特征并执行一些简单的转换,然后再输出到 ADL 中的 csv/tsv 文件。

但是,当我尝试在 SELECT 语句中添加进一步的转换时,由于特别是一个 SELECT 语句,这项工作似乎需要更长的时间来运行(10+ 分钟对 1 分钟)。

我相信这是由于“年月”列的计算,我基本上使用串联将日期列转换为我需要的格式。

下面是快速运行的作业:

    @StgCrime =
SELECT CrimeID,
       [Month],
       ReportedBy,
       FallsWithin,
       Longitude,
       Latitude,
       Location,
       LSOACode,
       LSOAName,
       CrimeType,
       LastOutcome,
       Context
FROM @ExtCrime;

OUTPUT @StgCrime
   TO "CrimeOutput/Crimes.csv"
     USING Outputters.Csv(outputHeader:true);

而需要更长的时间的工作:

    @StgCrime =
SELECT CrimeID,
       String.Concat([Month].Substring(0, 4),[Month].Substring(5, 2)) AS YearMonth,
       ReportedBy AS ForceName,
       Longitude,
       Latitude,
       Location,
       LSOACode,
       CrimeType,
       LastOutcome
FROM @ExtCrime;

OUTPUT @StgCrime
   TO @OCrime
     USING Outputters.Csv(outputHeader:true);

Vertex视图的区别:

简单/快速的工作

通过额外的改造

谁能帮我澄清一下?当然,一个转换不应该导致作业运行时间的增加吗?

被查询的数据文件由 1066 个 csv 文件组成,总共约 2.5GB。

4

1 回答 1

0

没有看到所有脚本和生成的作业图以及指定的 AU 的数量,很难估计为什么一个作业的运行速度比另一个慢。

您说“数据文件”由 1066 个 CSV 文件组成,所有这些文件看起来都相当小,总共 2.5GB。我希望您在提取阶段可能会获得 1066 个提取顶点。简单的工作也一样吗?

我们在预览版中有一个新功能,它将最多 200 个文件(或 1GB 任何先出现的文件)分组到单个顶点中,以最大限度地减少顶点启动时间。

您可以添加以下语句来尝试您的工作:

SET @@FeaturePreviews = "InputFileGrouping:on";
于 2018-04-19T05:09:18.930 回答