首页 > 解决方案 > 错误:“数据源 org.apache.spark.sql.cassandra 不支持流式读取”

问题描述

数据源 org.apache.spark.sql.cassandra 不支持流式读取

   val spark = SparkSession
  .builder()
  .appName("SparkCassandraApp")
  .config("spark.cassandra.connection.host", "localhost")
  .config("spark.cassandra.connection.port", "9042")
  .config("spark.cassandra.auth.username", "xxxxx")
  .config("spark.cassandra.auth.password", "yyyyy")
  .master("local[*]")
  .getOrCreate();

val tableDf3 = spark.**readStream**
  .format("org.apache.spark.sql.cassandra")
  .options(Map( "table" -> "aaaaa", "keyspace" -> "bbbbb"))
  .load()
  .filter("deviceid='XYZ'")

tableDf3.show(10)

标签: scalaapache-sparkcassandraspark-structured-streamingspark-cassandra-connector

解决方案


没错——Spark Cassandra 连接器只能用作流式接收器,不能用作流式源。

如果您想从 Cassandra 中获取更改,那么这是一项相当复杂的任务,这取决于 Cassandra 的版本(是否实现 CDC)以及其他因素。

对于 Spark,您可以通过定期重新读取数据来实现某种流式传输,使用时间戳列过滤掉您已经读取的数据。您可以在以下答案中找到有关该方法的更多信息。


推荐阅读