【发布时间】:2017-10-19 07:53:04
【问题描述】:
全部 -
我在使用 ADLA 连接表并将它们加载到 Azure SQL DW 时遇到了一些问题。
我被困在一个加载过程中,不知道如何解决这个问题。我有一些购买信息,当我从本地系统拉入 ADLS 时,会创建大约 25 MB 的输出文件,当我尝试将它们加入到在 ADLA 作业中使用“INNER JOIN”时,它会持续运行很长时间。在运行时,我看到输出文件继续超过 5+ GB。我觉得这对于 25 MB 的文件来说太多了,并且不确定是否做错了什么(从 VS 运行时附上屏幕截图以供参考)。
我所做的过程是 - 1- 使用 ADF 将数据从本地数据库加载到云 ADLS 存储 2- 运行 ADLA 作业以将 ADLS 文件拉入 ADLA 表并使用 ROUND ROBIN 选项进行分区以避免数据倾斜问题 3- ADLA作业将在 ADLS 存储 4-ADF 管道中创建一个聚合文件以将 #3 文件加载到 Azure SQL DW
任何指示或帮助都会很有帮助。
谢谢,沙比尔
这是代码(我已删除所有字段名称和客户信息)。希望这会有所帮助。
DECLARE @dir = "/{date:yyyy}/{date:MM}/{date:dd}/<FILE PATH>/";
DECLARE @in_1 string = <FILE #1>;
DECLARE @in_2 string = <FILE #2>;
DECLARE @out string = <OUTPUT FILE>;
@file1 =
EXTRACT
<25 COL. WITH ALL NULLABLE>
date DateTime
FROM @in_1
USING Extractors.Text(delimiter : '|');
@file2 =
EXTRACT
<40 COL. WITH ALL NULLABLE>
date DateTime
FROM @in_2
USING Extractors.Text(delimiter : '|');
@output =
SELECT
<25 + 40 COL. FROM INPUT FILES>
FROM @file1 AS f1
INNER JOIN @file2 AS f2
ON f1.join1 == f2.join2;
OUTPUT @purchase
TO @out
USING Outputters.Text(delimiter : '|');
这是运行抛出 ADF 管道并使用日期和文件路径的外部参数。
【问题讨论】:
-
请贴出你正在使用的U-SQL代码。
-
Bob,我在问题中添加了代码 sn-p。提前致谢。
-
如果您的连接导致数据量增加,可能的原因是您的连接列中有重复值。如果一个值在左表中出现 100 次,在右表中出现 1000 次,这将导致输出中出现 100,000 行(笛卡尔积)。您能否检查一下,例如通过在 Power BI 中加载您的数据?
-
是的。亚历山大。这看起来更像是笛卡尔问题。我现在很好。谢谢!
标签: u-sql