来自 JDBC 源的 Spark 结构化流式传输

Spark structured streaming from JDBC source

有人可以告诉我是否可以从 JDBC 源进行 Spark 结构化流式传输吗?例如 SQL 数据库或任何 RDBMS。

我看过一些关于 SO 的类似问题,例如

Spark streaming jdbc read the stream as and when data comes - Data source jdbc does not support streamed reading

但是,我想知道它是否在 Apache Spark 上得到官方支持?

如果有任何有用的示例代码。

谢谢

不,Spark Structured Streaming 中不支持built-in。主要原因是大多数数据库没有提供统一的接口来获取变化。

可以使用存档日志、write-ahead 日志等从某些数据库中获取更改。但它是 database-specific。对于许多数据库来说,流行的选择是 Debezium,它可以读取此类日志并将更改列表推送到 Kafka 或类似的东西中,Spark 可以从中使用它。

我正在进行一个项目,现在使用 ORACLE 的 CDC Shareplex 构建这个并写入 KAFKA,然后使用 Spark Structured Streaming 与 KAFKA 集成和 MERGE 在 HDFS 上的增量格式。

也就是说,如果不使用 Debezium,那就是这样做的方法。您可以使用基表或物化视图的更改日志来提供 CDC。

所以直接 JDBC 是不可能的。