You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Scala读取Cassandra中Map(varchar,double)类型数据报错求助

解决Scala读取Cassandra Map(varchar, double)类型的报错问题

这个问题我之前也踩过坑,核心原因很明确:Cassandra Java驱动的getMap方法要求泛型类型参数必须是引用类型,而你传入的classOf[Double]在Scala语境下对应的是Java的基本类型double的Class对象——基本类型是不能作为泛型参数使用的,这就直接触发了IllegalArgumentException: Primitive type 'double' used as type parameter这个错误。

快速解决方案

把基本类型的Class换成对应的包装类Class,也就是java.lang.Double(Java里的Double包装类)。修改后的代码如下:

row.getMap("column_name", classOf[String], classOf[java.lang.Double])

优化写法(可选)

如果觉得java.lang.Double写起来太冗长,可以通过导入别名简化代码:

import java.lang.Double as JDouble

// 之后使用别名即可
row.getMap("column_name", classOf[String], classOf[JDouble])

额外说明

如果你后续打算用更贴合Scala风格的方式处理Cassandra数据,也可以考虑使用DataStax官方的Scala驱动(适配Cassandra 3.0版本),它会自动处理基本类型和包装类的转换,代码会更简洁直观,比如可以直接用:

row.get[Map[String, Double]]("column_name")

内容的提问来源于stack exchange,提问作者priyanka goel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 06:52:51