首页 > 解决方案 > Spark 从 Cassandra 错误 org.apache.spark.unsafe.types.UTF8String 读取数据不是字符串模式的有效外部类型

问题描述

我有一个创建如下的 Cassandra 表(在 cqlsh 中)

CREATE TABLE blog.session( id int PRIMARY KEY, visited text);

我将数据写入 Cassandra,它看起来像这样

id  | visited
1   |  Url1-Url2-Url3

然后我尝试使用 spark Cassandra 连接器(2.5.1)阅读它。

val sparkSession = SparkSession.builder()
    .master("local")
    .appName("ReadFromCass")
    .config("spark.cassandra.connection.host", "localhost")
    .config("spark.cassandra.connection.port", "9042")
    .getOrCreate()

  import sparkSession.implicits._
  val readSessions = sparkSession.sqlContext
    .read
    .cassandraFormat("table1", "keyspace1").load().show()

但是,它似乎无法读取已访问的内容,因为它是一个文本对象,单词之间有破折号。错误发生为

org.apache.spark.unsafe.types.UTF8String is not a valid external type for schema of string

关于为什么 spark 无法阅读此内容以及如何解决此问题的任何想法?

标签: apache-sparkcassandraspark-cassandra-connectordata-extraction

解决方案


错误似乎是 spark-cassandra-connector 的版本。而不是使用“2.5.1”使用“3.0.0-beta”


推荐阅读