gpt4 book ai didi

java - 在 Spark Cassandra 连接器中映射 UUID

转载 作者:太空宇宙 更新时间:2023-11-04 09:58:58 31 4
gpt4 key购买 nike

我有以下代码将 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 示例,感谢您的帮助。

最佳答案

这是一个非常奇怪的错误 - 这在连接器 2.4.0 和 Spark 2.2.1 上运行良好,示例如下:

表定义:

CREATE TABLE test.utest (
id int PRIMARY KEY,
u uuid
);

POJO class :

public class UUIDData {
private UUID u;
private int id;
...
// getters/setters
};

Spark job :

public static void main(String[] args) {
SparkSession spark = SparkSession
.builder()
.appName("UUIDTest")
.getOrCreate();

CassandraJavaRDD<UUIDData> uuids = javaFunctions(spark.sparkContext())
.cassandraTable("test", "utest", mapRowTo(UUIDData.class));

JavaRDD<UUIDData> uuids2 = uuids.map(x -> new UUIDData(x.getId() + 10, x.getU()));

CassandraJavaUtil.javaFunctions(uuids2)
.writerBuilder("test", "utest", mapToRow(UUIDData.class))
.saveToCassandra();
}

我注意到,在您的代码中,您使用了函数 mapRowTomapToRow ,而没有调用 POJO 上的 .class - 您确定您的代码已编译并且没有运行任何旧版本的代码吗?

关于java - 在 Spark Cassandra 连接器中映射 UUID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53747120/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com