spark结构化流作业如何处理流静态DataFrame联接



我有一个spark结构的流式作业,它从cassandra和deltalake读取映射表,并与流式df连接。我想了解这里的确切机制。火花是否在每个微批次周期都会击中这些数据源(卡桑德拉和德尔塔莱克(?如果是这样的话,我在sparkwebui中看到这些表只读取一次。请帮我理解这一点。提前感谢

"火花是否在每个微批次周期都会击中这些数据源(卡桑德拉和德尔塔莱克(">

根据书";Learning Spark,第2版";从O’Reilly关于静态流连接的文章中提到,在每个微批中都读取静态DataFrame。

更准确地说,我发现书中的以下部分非常有用:

  • 流静态连接是无状态操作,因此不需要任何类型的水印

  • 静态DataFrame在与每个微批的流数据连接时会重复读取,因此您可以缓存静态DataFrame以加快读取速度

  • 如果定义静态DataFrame的数据源中的底层数据发生了更改,则流式查询是否能看到这些更改取决于数据源的特定行为。例如,如果静态DataFrame是在文件上定义的,那么在重新启动流式查询之前,不会拾取对这些文件的更改(例如附加(。

当应用";静态流";join假设静态部分根本没有改变,或者只是缓慢地改变。如果您计划加入两个快速变化的数据源,则需要切换到";流";参加