私のコレクションの 1 つで、次のフィールドがあるとします。
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のnodejsドライバーを使用するなど、他の環境からこれを行ったので、Cassandraにエントリを挿入するときに値を除外する方法があることは知っています. null
予想される TupleValue またはユーザー定義型に挿入するときに、どのように値を強制することができますか?