繁体   English   中英

从卡夫卡接收/合并/更新Cassandra查询的数据到结构化流

[英]Combining/Updating Cassandra Queried data to Structured Streaming receieved from Kafka

我正在创建一个Spark结构化流应用程序,它将每10秒计算一次从Kafka接收的数据。

为了能够进行一些计算,我需要在Cassandra数据库中查找有关传感器和放置的一些信息。

如果我们对数据库表进行了一些更改,我会全神贯注于如何在整个群集中保持Cassandra数据的可用性,以及不时更新数据的方式。

目前,我正在使用Datastax Spark-Cassandra-connector在本地启动Spark时查询数据库

val cassandraSensorDf = spark
  .read
  .cassandraFormat("specifications", "sensors")
  .load

从这里开始,我可以通过将其与我的结构化流数据集结合使用此cassandraSensorDs

.join(
   cassandraSensorDs ,
   sensorStateDf("plantKey") <=> cassandraSensorDf ("cassandraPlantKey")
)

在运行结构化流时如何执行其他查询以更新此Cassandra数据? 以及如何使查询的数据在群集设置中可用?

使用广播变量,您可以编写包装器以定期从Cassandra获取数据并更新广播变量。 使用广播变量在流上进行地图侧联接。 我还没有测试过这种方法,我认为根据您的用例(吞吐量),这可能也是一个过大的杀伤力。

如何在Spark Streaming中更新广播变量?

另一种方法是查询流中的每个项目的Cassandra,以优化连接,您应确保使用连接池并仅为JVM /分区创建一个连接。 这种方法更简单,您不必担心定期预热Cassandra数据。

火花流和连接池实现

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM