在结构化流 API (pyspark) 中使用 redshift 作为 readStream 的 JDBC 源
Posted
技术标签:
【中文标题】在结构化流 API (pyspark) 中使用 redshift 作为 readStream 的 JDBC 源【英文标题】:Using redshift as a JDBC source for readStream in the Structured Streaming API (pyspark) 【发布时间】:2020-11-17 18:26:40 【问题描述】:我正在寻找一个包,或者以前使用 redshift 作为结构化流数据帧源的实现。
spark.readStream \
.format("io.github.spark_redshift_community.spark.redshift") \
.option('url', redshift_url) \
.option('forward_spark_s3_credentials', 'true') \
.load()
使用下面的格式会在读取时出错。如:
Data source io.github.spark_redshift_community.spark.redshift does not support streamed reading
如果您从 Spark 3 降级并使用:com.databricks.spark.redshift
,则会出现同样的错误
是否有已知的解决方法或方法/模式我可以用来实现(在 pyspark 中)redshift 作为 readStream 数据源
【问题讨论】:
【参考方案1】:正如错误所说,这个库不支持对 Redshift 进行流式读取/写入。
可以从项目源at link 确认。该格式不扩展或实现 Micro/Continuous 流读取器和写入器。
没有true streaming
简单的方法可以做到这一点。您可以探索以下途径,
-
探索第 3 方库。搜索
JDBC streaming spark
。免责声明:我没有使用过这些库,因此不认可这些库。
在自定义检查点机制上创建微批处理策略。
扩展说明: AFAIK,Spark JDBC 接口不支持结构化流。
【讨论】:
以上是关于在结构化流 API (pyspark) 中使用 redshift 作为 readStream 的 JDBC 源的主要内容,如果未能解决你的问题,请参考以下文章
PySpark 结构化流式处理:将查询的输出传递到 API 端点
使 Spark 结构化流中的 JSON 可以在 python (pyspark) 中作为没有 RDD 的数据帧访问