Очевидно, что нет встроенной поддержки приемника Cassandra в потоковой передаче Spark.Я нашел этот пример в Интернете, который реализует собственный приемник Cassandra для структурированной потоковой передачи Spark на основе ForEachWriter:
https://dzone.com/articles/cassandra-sink-for-spark-structured-streaming
Я понимаю, что нам нужно создать реализацию ForeachWriter, которая позаботится об открытииподключение к стоку (Cassandra), запись данных и закрытие соединения.Так что классы CassandraSinkForeach
и CassandraDriver
имеют смысл.
Однако у меня нет необходимости делать сериализуемый SparkSessionBuilder и даже необходимость инициализировать экземпляр SparkSession
внутри класса CassandraDriver
.Похоже, единственная причина для этого - инициализация CassandraConnector
из sparkConf.
Согласно документам CassandraConnector
, объект CassandraConnector может быть инициализирован из CassandraConnectorConfig, переданного в: http://datastax.github.io/spark-cassandra-connector/ApiDocs/2.4.0/spark-cassandra-connector/#com.datastax.spark.connector.cql.CassandraConnector
Может кто-нибудь объяснить, есть ли необходимость инициализировать SparkSession у рабочих?Это общая схема, и если да, то почему это требование?