全部 -
我在使用ADLA连接表并将它们加载到Azure SQL DW时遇到了一些问题。
我遇到了其中一个加载过程而不确定如何解决该问题。我有一些购买信息,当我从本地系统拉入ADLS时,会创建每个大约25 MB的输出文件,当我尝试将它们加入到ADLA作业中使用“INNER JOIN”时,它会长时间运行。在运行时我看到输出文件继续超过5 GB以上。我觉得这对于一个25 MB的文件来说太多了,并且不确定是否有任何错误(从VS运行时附加了屏幕截图以供参考)。
我所做的过程是 - 使用ADF 2-运行ADLA作业将数据从本地数据库加载到云ADLS存储,将ADLS文件拉入ADLA表并使用ROUND ROBIN选项进行分区以避免数据偏差问题3- ADLA job将在ADLS store 4 ADF管道中创建聚合文件,以将#3文件加载到Azure SQL DW中
任何指针或帮助都可能非常有用。
谢谢,Shabbir
这是代码(我删除了所有字段名称和客户端信息)。希望这会有所帮助。
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管道并使用外部参数作为日期和文件路径。
答案 0 :(得分:0)
看起来您没有使用ADLA表,只是直接在U-SQL中处理文件。这很好,但我只是想检查,因为你提到了表格。此外,代码输出了脚本中不存在的@purchase - 我假设您实际上是在实际脚本中输出正确的行集。
几个问题:
答案 1 :(得分:0)
如果f1.join1 == f2.join2
实际上正在比较(或多或少)唯一键与另一个(或多或少)唯一键,那么您应该获得合理的行数。
但很多人使用相同的语法实现CROSS JOIN
。例如,f1.join1
在整个表f1
中可以是1,而f2.join2
在整个表f2
中也可以是1。这些数据值会使您的输出为两个表中的CROSS JOIN
。