apache-spark - Spark readStream 不会获取输入文件中的架构更改。如何解决?
问题描述
在将其合并到基本增量表之前,我有以下脚本可以使用 spark 结构化流读取 CDC 数据。
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())
每当我在源表中添加一个新列时,尽管基础数据有一个新列,但读取流不会从源文件中获取架构更改。但是如果我手动重新启动脚本,它会使用新列更新架构。有没有办法让流媒体在运行时拾取它?
解决方案
推荐阅读
- python - 如何在 Python 中扫描多字符多字符串数组中的字符?
- ios - 是否可以将表视图控制器添加到视图控制器的一部分?
- reactjs - 如何使 onClearFilter 重新渲染最初收到的数据?
- python - matplotlib:在轴上画一个框
- c++ - MFC如何在切换视图时关闭无模式对话框
- html - 我如何使翻转卡与其他浏览器兼容
- chef-infra - chef-client 错误“JSON 必须不超过 1000000 字节”
- google-sheets - 无法使用 Google 表格中其他功能的单元格引用进行查询
- c# - 如何从另一个类制作动态按钮?
- c# - DGV绑定DataTable时如何防止空字符串变成DBNull.Value