显然在spark流媒体中没有对cassandra接收器的内置支持。我在网上找到了一个基于foreachwriter的定制cassandra sink for spark structured streaming示例:
https://dzone.com/articles/cassandra-sink-for-spark-structured-streaming
我知道我们需要创建一个foreachwriter实现,它负责打开到sink的连接(cassandra),写入数据并关闭连接。所以 CassandraSinkForeach
以及 CassandraDriver
上课是有道理的。
但是,我不需要使sparksessionbuilder可序列化,甚至不需要初始化 SparkSession
示例内部 CassandraDriver
班级。似乎这样做的唯一原因是初始化 CassandraConnector
从sparkconf。
根据 CassandraConnector
文档中,可以从传入的cassandraconnectorconfig初始化cassandraconnector对象:http://datastax.github.io/spark-cassandra-connector/apidocs/2.4.0/spark-cassandra-connector/#com.datastax.spark.connector.cql.cassandraconnector
有人能解释一下是否需要在工人中初始化sparksession吗?这是一个通用模式吗?如果是,为什么要求?
1条答案
按热度按时间5ktev3wc1#
如果可以升级到spark 2.4,那么可以使用foreachbatch,在那里可以在流式Dataframe之上应用批处理编写器。