![](/img/trans.png)
[英]Spark Structured Streaming from kafka to save data in Cassandra in Distributed fashion
[英]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获取数据并更新广播变量。 使用广播变量在流上进行地图侧联接。 我还没有测试过这种方法,我认为根据您的用例(吞吐量),这可能也是一个过大的杀伤力。
另一种方法是查询流中的每个项目的Cassandra,以优化连接,您应确保使用连接池并仅为JVM /分区创建一个连接。 这种方法更简单,您不必担心定期预热Cassandra数据。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.