首页 > 解决方案 > 事件中心数据到 SQL 数据仓库 (Synapse)

问题描述

我们正在尝试将事件中心 (EH) 数据(每分钟约 200MB 和 50k 条消息)集成到 SQL 数据仓库 (DW) 暂存区。

到目前为止,我们已尝试通过使用 Azure 函数 (AF) 直接读取 EH 数据并将其输出到 Synapse 来解决此问题,但我们已达到 DW 的最大并发打开会话数(< DWU500c 为 512)。我们还尝试增加从 EH 读取的maxBatchSize,以减少 DW 端所需的会话,但这似乎使 AF 非常不稳定。

今天我在 Microsoft 文档中找到了本教程,该教程通过使用 EH 捕获功能和事件网格 (EG) 在写入 Blob 文件时触发 AF 将 EH 与 AF 分离。那么我是否正确地假设这应该会大大减少 DW 中的最大并发打开会话,因为我们谈论的是更大的批量大小,当 AF 读取捕获的 Blob 文件时,其大小可达 500MB?

一种解决方案和另一种解决方案之间有哪些优势?您还有其他最佳实践来实现这一目标吗?

提前谢谢!

标签: azure-functionsazure-eventhubazure-eventgridazure-synapseazure-eventhub-capture

解决方案


成本

一般来说,我不喜欢他们要求我将数据从一个队列推送到另一个队列,然后在最终目的地之前进行一些存储。似乎您无缘无故地支付了额外的费用。

过去,他们也试图向我们兜售数据工厂,并将数据从 Datalake 加载到 Synapse。与数据工厂相比,Azure Functions 便宜得离谱。

不要从表面上看 Azure 规定的“模式”,它们非常适合作为获取有关如何集成的想法的来源,但我会检查成本并尝试优化。


我能想到的最便宜的:

如果您可以控制数据源,请考虑将其写入 datalake 中的 csv/parque/orc 文件。

然后,您可以使用 Timer Triggered Azure Functions 定期使用COPY INTO将它们加载到 Synapse 中。


未来:

AFAI 了解架构的方向(我不为 Microsoft 工作并且没有官方知识),他们正试图将 COPY 命令作为 Polybase 加载的未来(这是将数据加载到 Synapse/DW 的首选方式)。

一般来说,您会想挖掘/询问以找出预览中某些东西的哪些子功能已经是 GA。例如,Synapse 本身处于预览阶段,预计将在 2020 年 EO 之前成为 GA,但 Synapse Pool 是 GA。COPY INTO 处于预览阶段,但支持使用 COPY INTO 加载 csv 文件是 GA 等等...

他们还推出了Azure 流分析,它再次处于预览阶段,但似乎是在它支持的各种来源和目的地中将数据“流入 Synapse”或“来自 EventHub”的未来。以下是一些解决方案模式

高温高压


推荐阅读