Spark readStream 不会获取输入文件中的架构更改。如何解决?
Spark readStream does not pick up schema changes in the input files. How to fix it?
我有以下脚本可以使用 spark 结构化流读取 CDC 数据,然后才能将其合并到基本增量中 table。
streamDf = spark \
.readStream \
.format('csv') \
.option("mergeSchema", "true") \
.option('header', 'true') \
.option("path", CDCLoadPath) \
.load()
streamQuery = (streamDf \
.writeStream \
.format("delta") \
.outputMode("append") \
.foreachBatch(mergetoDelta) \
.option("checkpointLocation", f"{CheckpointLoc}/_checkpoint") \
.trigger(processingTime='20 seconds') \
.start())
每当我在源 table 中添加一个新列时,读取流不会从源文件中获取架构更改,尽管基础数据有一个新列。但是如果我手动重新启动脚本,它会使用新列更新架构。有没有办法让流式传输在 运行 时接收它?
我有以下脚本可以使用 spark 结构化流读取 CDC 数据,然后才能将其合并到基本增量中 table。
streamDf = spark \
.readStream \
.format('csv') \
.option("mergeSchema", "true") \
.option('header', 'true') \
.option("path", CDCLoadPath) \
.load()
streamQuery = (streamDf \
.writeStream \
.format("delta") \
.outputMode("append") \
.foreachBatch(mergetoDelta) \
.option("checkpointLocation", f"{CheckpointLoc}/_checkpoint") \
.trigger(processingTime='20 seconds') \
.start())
每当我在源 table 中添加一个新列时,读取流不会从源文件中获取架构更改,尽管基础数据有一个新列。但是如果我手动重新启动脚本,它会使用新列更新架构。有没有办法让流式传输在 运行 时接收它?