azure-functions - 事件中心数据到 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?
一种解决方案和另一种解决方案之间有哪些优势?您还有其他最佳实践来实现这一目标吗?
提前谢谢!
解决方案
成本
一般来说,我不喜欢他们要求我将数据从一个队列推送到另一个队列,然后在最终目的地之前进行一些存储。似乎您无缘无故地支付了额外的费用。
过去,他们也试图向我们兜售数据工厂,并将数据从 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”的未来。以下是一些解决方案模式。
高温高压
推荐阅读
- android - 使用 Android 库 (AAR) 时出现 AndroidRuntime 错误 ClassNotFoundException
- karate - 我可以对 JSON 对象使用 ## 操作吗?
- python - 用特殊字符替换 RTF 文件中的占位符
- angular - 为什么我的“
- excel - 在excel中,如何比较单个单元格中的多个值
- oracle - 来自 Oracle 数据库的连接错误 - Logstash
- javascript - 如何在 Next 应用中缓存动态图像?
- google-apps-script - 检索选定行的问题 google-apps-script
- sharepoint - SharePoint Online - 编辑从列表项中排除某些列值的结果源
- django - Django-Tables2 获取当前页码