【发布时间】:2019-05-13 19:12:00
【问题描述】:
我有以下代码将 RDD 保存到 cassandra:
JavaRDD<UserByID> mapped = ......
CassandraJavaUtil.javaFunctions(mapped)
.writerBuilder("mykeyspace", "user_by_id", mapToRow(UserByID.class)).saveToCassandra();
而UserByID 是一个普通的可序列化 POJO,具有以下带有 getter 和 setter 的变量
private UUID userid;
Cassandra 表与类 UserByID 变量的名称完全相同,并且 userid 是 Cassandra 表中的 uuid 类型,我正在使用相同的类映射从表中成功加载数据。
CassandraJavaRDD<UserByID> UserByIDRDD = javaFunctions(spark)
.cassandraTable("mykeyspace", "user_by_id", mapRowTo(UserByID.class));
但是,当我调用上面的saveToCassandra 函数时,我得到以下异常:
org.apache.spark.SparkException: Job aborted due to stage failure: Task
0 in stage 227.0 failed 1 times, most recent failure: Lost task 0.0
in stage 227.0 (TID 12721, localhost, executor driver):
java.lang.IllegalArgumentException:
The value (4e22e71a-a387-4de8-baf1-0ef6e65fe33e) of the type
(java.util.UUID) cannot be converted to
struct<leastSignificantBits:bigint,mostSignificantBits:bigint>
为了解决我注册了 UUID 编解码器的问题,但没有帮助,我正在使用 spark-cassandra-connector_2.11 版本 2.4.0 和相同版本的 spark-core_2.11 有什么建议吗?
我的参考是 here,但它没有 Java UUID 示例,感谢您的帮助。
【问题讨论】:
标签: java apache-spark cassandra rdd spark-cassandra-connector