如何使用 spark-cassandra-connector 将数据集写入 Cassandra table?
How to write a Dataset into Cassandra table using spark-cassandra-connector?
我正在尝试将结构化 Steaming 数据集保存到给定的 Cassandra table。
我正在使用 datastax cassandra 连接器版本 spark-cassandra-connector_2-11.jar
当我尝试像下面这样保存数据集时
dataSet
.writeStream()
.format("org.apache.spark.sql.cassandra")
.option("table",table)
.option("keyspace", keyspace)
.outputMode("append")
.start();
抛出错误:
Data source org.apache.spark.sql.cassandra does not support streamed
writing
应该怎么办以及如何处理?
关于它有几个选项:
- 使用 Spark Cassandra 连接器 (SCC) 版本 2.x、Spark < 2.4 和 OSS Cassandra,唯一的选择是实现自定义
forEach
操作,例如 done here;
- 使用 Spark Cassandra Connector 版本 2.x、Spark >= 2.4 和 OSS Cassandra,我们可以使用
forEachBatch
进行正常的写入操作,例如 here;
- 对于 DSE,我们可以只使用
data.writeStream().format("org.apache.spark.sql.cassandra")
,因为 DSE Analytics 具有自定义 SCC;
- 从 SCC 2.5 开始,特定于 DSE 的功能也对 OSS Cassandra 开放,因此我们可以像使用 DSE 一样使用它,shown in the docs。
我正在尝试将结构化 Steaming 数据集保存到给定的 Cassandra table。
我正在使用 datastax cassandra 连接器版本 spark-cassandra-connector_2-11.jar
当我尝试像下面这样保存数据集时
dataSet
.writeStream()
.format("org.apache.spark.sql.cassandra")
.option("table",table)
.option("keyspace", keyspace)
.outputMode("append")
.start();
抛出错误:
Data source org.apache.spark.sql.cassandra does not support streamed writing
应该怎么办以及如何处理?
关于它有几个选项:
- 使用 Spark Cassandra 连接器 (SCC) 版本 2.x、Spark < 2.4 和 OSS Cassandra,唯一的选择是实现自定义
forEach
操作,例如 done here; - 使用 Spark Cassandra Connector 版本 2.x、Spark >= 2.4 和 OSS Cassandra,我们可以使用
forEachBatch
进行正常的写入操作,例如 here; - 对于 DSE,我们可以只使用
data.writeStream().format("org.apache.spark.sql.cassandra")
,因为 DSE Analytics 具有自定义 SCC; - 从 SCC 2.5 开始,特定于 DSE 的功能也对 OSS Cassandra 开放,因此我们可以像使用 DSE 一样使用它,shown in the docs。