显然没有对火花流中的卡桑德拉水槽的内置支持。我在网上找到了这个示例,该示例在基于foreachwriter的情况下实现了一个自定义的Cassandra水槽,用于火花结构化流媒体:
在我了解,我们需要创建一个foreachWriter实现,该实现需要照顾与接收器(Cassandra),编写数据并关闭连接的连接。因此CassandraSinkForeach
和CassandraDriver
类很有意义。
但是,我不需要使SparkSessionBuilder序列化,甚至需要在CassandraDriver
类中初始化SparkSession
实例。似乎这样做的唯一原因是从SparkConf初始化CassandraConnector
。
根据CassandraConnector
文档,Cassandraconnector对象可以从cassandraconnectorconfig初始化:.datastax.spark.connector.cql.cassandraconnector
有人可以解释是否需要初始化工人的火花?这是一个通用模式,如果是的,为什么需要?
如果您可以升级到Spark 2.4,则可以使用foreachBatch,可以在流中应用批处理作者。