【问题标题】:Spark + Kafka: How to join kafka stream with RDBMSSpark + Kafka:如何使用 RDBMS 加入 kafka 流
【发布时间】:2020-03-28 16:01:28
【问题描述】:

要求:我有不同的微服务向 Kafka 生成数据。我想收集信息、进行汇总并为报告构建表格。

为报告构建新表需要我从 Kafka 读取数据,将其与现有事实表进行比较,并在数据库中创建/更新新的 roes。

我当时的想法是使用 Spark Streaming 从 Kafka 主题中读取数据并与 RDBMS 数据库进行连接。

寻求帮助以了解连接的最佳方式。

【问题讨论】:

  • 我建议尝试结构化流式传输并将这些数据帧与从 jdbc 连接中提取的数据帧连接
  • 问题是数据库可能有数百万的记录,但 Kafka 可能只有少数条目的记录。从数据库加载整个表似乎是一个问题

标签: apache-spark apache-kafka spark-streaming


【解决方案1】:

JDBC 连接器和 CDC 更有效地通过数据库加载/上传数据。我们可以按照以下步骤进行:

  1. 创建 CDC 或 JDBC Kafka 源连接器以将所有数据从 RDBMS 表(用户)加载到 Kafka 中

Please refer here JDBC Connector

  1. 从两个 Kafka 主题创建 2 个 Kafka 流
  2. 使用 Kafka Stream 加入和聚合加入

Please refer here Kafka Stream join

  1. 一个。使用自定义 Java JDBC 更新回数据库
    或

    b.尝试将更新的数据发布到新主题并使用 JDBC 接收器连接器更新回 RDBMS DB 表。

【讨论】:

  • 在第 1 步加载整个数据以我为例,数百万条记录听起来不可扩展
  • Kafka 用于大规模数据......并且可以根据需求轻松扩展......
  • 我最终编写了一个火花流作业和一个预定作业。 Spark Streaming 作业负责读取 Kafka 主题并更新事实表,而 Spark 调度作业负责读取数据仓库并更新报告表。不确定这是最好的方法,但它解决了我的问题
猜你喜欢
  • 2020-05-01
  • 2019-06-01
  • 2016-03-12
  • 2017-07-22
  • 1970-01-01
  • 2020-07-21
  • 2018-10-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多