在我的一个收藏中,假设我有以下字段:
f: frozen<tuple<text, set<text>>
假设我想使用 Scala 脚本在该特定字段为空、null、不存在等的位置插入一个条目,在插入之前我将条目的字段映射如下:
sRow("fk") = null // or None, or maybe I simply don't specify the field at all
尝试运行 spark 脚本(来自 Databricks,Spark 连接器版本 1.6)时,出现以下错误:
org.apache.spark.SparkException: Job aborted due to stage failure: Task 6 in stage 133.0 failed 1 times, most recent failure: Lost task 6.0 in stage 133.0 (TID 447, localhost): com.datastax.spark.connector.types.TypeConversionException: Cannot convert object null to com.datastax.spark.connector.TupleValue.
at com.datastax.spark.connector.types.TypeConverter$$anonfun$convert$1.apply(TypeConverter.scala:47)
at com.datastax.spark.connector.types.TypeConverter$$anonfun$convert$1.apply(TypeConverter.scala:43)
当使用None
而不是null
我仍然得到一个错误,虽然一个不同的:
org.apache.spark.SparkException: Job aborted due to stage failure: Task 2 in stage 143.0 failed 1 times, most recent failure: Lost task 2.0 in stage 143.0 (TID 474, localhost): java.lang.IllegalArgumentException: requirement failed: Expected 2 components, instead of 0
at scala.Predef$.require(Predef.scala:233)
at com.datastax.spark.connector.types.TupleType.newInstance(TupleType.scala:55)
我知道 Cassandra 没有确切的 null 概念,但我知道在将条目插入 Cassandra 时有一种方法可以将值排除在外,就像我在其他环境中所做的那样,比如为 Cassandra 使用 nodejs 驱动程序。null
在插入预期的 TupleValue 或某些用户定义的类型时,如何强制使用-like 值?