我正在开发一个 Azure Synapse 管道,该管道以 parquet 格式将一堆表从 Oracle 加载到 ADLS Gen2,但我获得的吞吐量非常低。为了增加这一点,我在 Synapse 复制活动中看到了
Partition option
(分区选项 synapse),但我不太理解它。我知道我的公司网络、SHIR 配置、其位置和 Oracle 表的属性可能会影响此吞吐量,但我必须拥有完全优化的管道,然后才能要求更改这些内容,所以我在这里。
到目前为止我得到的(如果我错了请纠正我)是这些分区将用于创建到源的同时连接,从而增加吞吐量。想象一下,我在设备架构上有一个名为“温度”的表,如下所示:
设备ID | 设备名称 | 温度(°C) | 日期时间 |
---|---|---|---|
1 | 设备A | 35 | 2024-10-24 08:00:00 |
1 | 设备A | 36 | 2024-10-24 09:00:00 |
1 | 设备A | 34 | 2024-10-24 10:00:00 |
2 | 设备B | 40 | 2024-10-24 08:05:00 |
2 | 设备B | 41 | 2024-10-24 09:05:00 |
2 | 设备B | 39 | 2024-10-24 10:05:00 |
3 | 设备C | 38 | 2024-10-24 08:10:00 |
3 | 设备C | 37 | 2024-10-24 09:10:00 |
3 | 设备C | 39 | 2024-10-24 10:10:00 |
1 | 设备A | 35 | 2024-10-24 11:00:00 |
1 | 设备A | 36 | 2024-10-24 12:00:00 |
1 | 设备A | 34 | 2024-10-24 13:00:00 |
2 | 设备B | 40 | 2024-10-24 11:05:00 |
2 | 设备B | 41 | 2024-10-24 12:05:00 |
2 | 设备B | 39 | 2024-10-24 13:05:00 |
3 | 设备C | 38 | 2024-10-24 11:10:00 |
3 | 设备C | 37 | 2024-10-24 12:10:00 |
3 | 设备C | 39 | 2024-10-24 13:10:00 |
1 | 设备A | 35 | 2024-10-24 14:00:00 |
2 | 设备B | 40 | 2024-10-24 14:05:00 |
真正的行数大约有数千亿行。最初的满载已经完成,现在每天只加载新数据,每天大约5亿行,大约需要10个小时。我应该如何配置分区和数据加载活动以获得最大吞吐量?如果表没有日期时间列怎么办?
根据文档
Partition option
它将解析分区文件路径并将其添加为目标中的列。
enablePartitionDiscovery - 对于已分区的文件,指定是否从文件路径解析分区并将它们添加为额外的源列。
我应该如何配置分区和数据加载活动以获得最大吞吐量?
要以更快、更高效的方式加载数据,您可以尝试以下选项:
parallelCopies
属性来指示您希望复制活动使用的并行度。将此属性视为复制活动中的最大线程数。您可以参考此文档以获取有关如何优化复制活动的更多信息