azure - 雪花: Recommendation how to integrate streaming data from Azure Event Hub

标签 azure snowflake-cloud-data-platform azure-eventhub

我正在尝试找出如何最好地将流数据从 Azure 事件中心集成到 Snowflake 中,例如具有低延迟和尽可能经济高效的特点。

我自己集思广益,想出了两种可能性,它们都有一些很大的缺点:

选项 1:设置“事件中心捕获”以将事件中心数据导出到 Blob 存储并导入到 Snowflake

这似乎是最直接的方法。通过启用事件中心捕获 ( https://learn.microsoft.com/en-us/azure/event-hubs/event-hubs-capture-overview ),事件中心的数据将自动导出到 Blob 存储。然后将生成的 Avro 文件通过 Snowpipe 导入到 Snowflake(外部表、使用 Snowflake 任务进行编排)。

缺点:

  • 使用事件中心捕获导出的最短时间窗口为 1 分钟。 Snowflake 任务也可以安排为每 1 分钟运行一次。这意味着潜在的最大值。约延迟2 分钟(事件中心 -> 雪花)。
  • Snowflake 仓库基本上会 24/7 运行(这会在 Snowflake 中产生相当大的成本)。

选项 2:创建一个 Azure 函数来监听事件中心事件并通过 Snowflake API 将数据直接写入 Snowflake

Azure 函数将监听事件中心事件并通过 Snowflake API 将事件数据直接写入 Snowflake(基本上:通过 Snowflake API 将 SQL INSERT 发送到数据库)。

优点:

  • 不需要 blob 存储
  • “相当”低延迟

缺点:

  • 如上所述:Snowflake 仓库将全天候 (24/7) 运行(成本)
  • 需要更多开发(Azure 功能)

然后我阅读了有关流式传输/Ingest SDK 的 Snowflake 文档,因此基于此:

选项 3:使用 Snowflake Streaming (?)

读完文档后,我有点困惑。免责声明:我没有 Kafka 或任何其他流技术的经验。

Azure 事件中心文档指出:

"Azure Event Hubs provides an Apache Kafka endpoint on an event hub, which enables users to connect to the event hub using the Kafka protocol."

Snowflake 有一个 Snowflake Kafka 连接器。 Snowflake Kafka 连接器是否可用于连接到 Azure 事件中心以将数据直接流式传输到 Snowflake?

还有一个适用于 Java 的“Snowflake Ingest SDK API”。不幸的是我不懂Java。 :( 有什么方法可以将其与任何其他语言(例如 Python)一起使用吗?

我很高兴获得一些反馈/最佳实践/实际经验,了解如何最好地将数据从 Azure 事件中心实现到 Snowflake 中。

最佳答案

我心里有另一个想法:我想改进你的第三种方法

如果您想实现低延迟,那么 Kafka 可能是新行到达后立即处理实时事件的最佳选择。从 Azure 事件中心在 Kafka 主题中设置数据后。除了 JAVA/Python,您还可以尝试 Kafka Connector with SnowflakeSnowpipe Streaming Configuration Kafka 连接器配置文件中的设置。

snowflake.ingestion.method: SNOWPIPE_STREAMING

在这种方法中,更多的工作是设置配置。但这只是设置实时流媒体基础设施的一次性工作。

请检查雪花的链接文档。这可能会让您快速入门。

关于azure - 雪花: Recommendation how to integrate streaming data from Azure Event Hub,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76627562/

相关文章:

azure - 基于权限而不是基于角色

python - 雪花: SQL compilation error: error line invalid identifier '"dateutc"'

.net - 有什么方法可以在 azure 事件中心中使用 EventProcessorHost 检索跳过的事件吗?

azure - 用于事件中心的 kafkacat

c# - “authority”应为 Uri 格式参数名称 : authority

visual-studio-2012 - 通过 Visual Studio 发布时是否可以将单独的 Azure 角色部署到不同的服务?

asp.net - Azure Web App 数据库在哪里?

sql - 无法在 Snowflake 中具有混合数据类型的字段上内部连接两个简单的 CTE

datetime - 如何比较雪花中我所看到的两个日期(不同时区)(我无法设置时区参数)?

c# - 如何禁用 'EnableLinkRedirect' 属性以便在没有端口 104XX 的情况下从事件中心获取数据?