首页 > 解决方案 > 如何使用 spark-cassandra-connector 将数据集写入 Cassandra 表?

问题描述

我正在尝试将结构化蒸汽数据集保存到给定的 Cassandra 表中。

我正在使用 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();

投掷错误:

数据源 org.apache.spark.sql.cassandra 不支持流式写入

应该做什么以及如何处理?

标签: apache-sparkcassandraapache-spark-sqlspark-structured-streamingspark-cassandra-connector

解决方案


关于它有几种选择:

  1. 使用 Spark Cassandra Connector (SCC) 版本 2.x、Spark < 2.4 和 OSS Cassandra,唯一的选择是实现自定义forEach操作,就像这里所做的那样;
  2. 使用 Spark Cassandra 连接器版本 2.x、Spark >= 2.4 和 OSS Cassandra,我们可以使用forEachBatch正常的写入操作,就像这里一样;
  3. 对于 DSE,我们可以只使用data.writeStream().format("org.apache.spark.sql.cassandra"),因为 DSE Analytics 有自定义 SCC;
  4. 从 SCC 2.5 开始,OSS Cassandra 也开放了 DSE 特定功能,因此我们可以像 DSE 一样使用它,如docs 所示

推荐阅读