广泛使用的开源引擎。它可以优雅地处理从小规模 ETL 到最大 Internet 服务的各种逻辑处理。这种强大的功能已在各行各业的许多用例中得到采用。 Structured Streaming 的另一个优势是它能够处理各种来源和接收器(或目的地)。除了本地支持的众多接收器类型主题、Kinesis 流等)之外,结构化流还支持专用接收器,该接收器能够对输出执行任意逻辑流式查询:foreachBatch 扩展方法。使用foreachBatch,任何可通过 Python 或 Scala 代码寻址的输出目标都可以成为流的目标。 在这篇文章中,我们将分享我们为客户提供的最佳实践指南,这些客户询问如何可扩展地将流数据转换为对 REST API 的调用。
将传入的数据流路由到 REST API
上的调用是许多集成和数据工程场景中的要求。 我们经常遇到的一些实际示例是在操作和安全分析工作负载中。客户希望从 kafka、eventhub 和 Kinesis 等来源获取和丰富实时流数据,并将其发布到 E和 Splunk 等运营搜索引擎中。Spark Streaming 的一个关键优势是它允许我们在数据流出到搜索引擎之前丰富、执行数据质量检查和聚合(如果需要)。这为客户提供了用于操作和安全分析的高质量实时数据管道。 此场景的最基 whatsapp 手机号码列表 本表示如图 1 所示。这里我们有一个传入数据流 – 它可以是 Kafka 主题、AWS Kinesis、Azure Event Hub 或任何其他流式查询源。随着消息从流中流出,我们需要使用部分或全部消息数据调用 REST API。 图1 图1 在新建环境中,有许多技术选项可以实现这一点。
我们这里的重点是已经在 Spark
中拥有流式管道的团队,用于为机器学习、数据仓库或其他以分析为中心的用途准备数据。在这种情况下,团队将已经具备 Spark 的技能、工具和 DevOps 流程。假设团队现在需要将一些数据路由到 REST API 调用。如果他们希望利用现有技能或避免重新设计他们的工具链,他们可以使用结构化 按列表 流来完成它。 关键实现技术和一些代码 附件 1 中包含一个基本代码示例。在详细查看之前,我们将介绍一些有效实施的关键技术。 首先,您将像读取任何其他流作业一样读取传入的流。这里所有有趣的部分都在流的输出端。如果您的数据在发布到 REST API 之前必须在运行中进行转换,请像在任何其他情况下一样进行转换。此代码片段从 Delta 表中读取;如前所述,还有许多其他可能的来源。