Scala:从"锡拉"读取数据引发异常



我不熟悉scala,也不熟悉运行一个简单的查询来从scylla中检索一些数据。这是我的代码:

val my_name = "test"
val cluster = ScyllaConnector.getCluster(clusterIpString, scyllaPreferredDc, scyllaUsername, scyllaPassword)
val session = cluster.connect(keySpace)
val preparedStatement: PreparedStatement = session.prepare(GOID_QUERY)
val nameResults = session.execute(preparedStatement.bind(my_name))
val nameResult = nameResults.one()
if(nameResult != null){
println("Here")
val id_recent = nameResult.getSet("id_recent",  classOf[String])
println(id_recent)
}
session.close()
cluster.close()

投掷:

线程中的异常"主";com.datatax.river.core.exceptions.CodecNotFoundException:Codec不是为请求的操作找到:[varchar<->java.util.Set<java.lang.String>]在com.datastax.driver.core.CodecRegistry.notFound(CodecRegistry.java:679(在com.datastax.driver.core.CodecRegistry.createCodec(CodecRegistry.java:526(在com.datatax.driver.core.CodecRegistry.findCodec(CodecRegistry.java:506(在com.datatax.driver.core.CodecRegistry.access$200(CodecRegistry.java:140(在com.datatax.driver.core.CodecRegistry$TypeCodecCacheLoader.load(CodecRegistry.java:211(在com.datatax.driver.core.CodecRegistry$TypeCodecCacheLoader.load(CodecRegistry.java:208(在shadeio.common.cache.LocaCache$LoadingValueReference.loadFuture(LocalCache.java:3527(在shadeio.common.cache.LocalCache$Seage.loadSync(LocalCache.java:2319(在shadeio.common.cache.LocalCache$Seage.lockedGetOrLoad(LocalCache.java:2822(位于shadeio.common.cache.LocalCache$Segment.get(LocalCache.java:2197(位于shadeio.common.cache.LocaCache.get(LocalCache.java:3937(shadeio.common.cache.LocalCache.getOrLoad(LocalCache.java:3941(位于shadeio.common.cache.LocaCache$LocalLoadingCache.get(LocalCache.java:4824(在com.datastax.driver.core.CodecRegistry.lookupCodec(CodecRegistry.java:480(在com.datastax.driver.core.CodecRegistry.codecFor(CodecRegistry.java:448(在com.datatax.driver.core.AbstractGettableByIndexData.codcFor(AbstractGettableByIndexData.java:73(在com.datatax.driver.core.AbstractGettableByIndexData.getSet(AbstractGettableByIndexData.java:318(在com.datatax.driver.core.AbstractGettableData.getSet(AbstractGettableData_java:26(在com.datatax.driver.core.AbstractGettableByIndexData.getSet(AbstractGettableByIndexData.java:307(在com.datatax.driver.core.AbstractGettableData.getSet(AbstractGettableData_java:26(在com.datatax.driver.core.AbstractGettableData.getSet(AbstractGettableData_java:215(在class.path$.main(CodeName.scala:184(在class.path.main(CodeName.scala(位于的sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法(sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62(在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43(位于java.lang.reflect.Method.ioke(Method.java:498(org.apache.spark.deploy.JavaMainApplication.start(SparkApplication.scala:52(在org.apache.spark.deploy.SparkSubmit.org/apache$spark$deploy$SparkSubmit$$runMain(SparkSubmite.scala:845(在org.apache.spark.deploy.SparkSubmit.doRunMain$1(Sparksubit.scala:161(网址:org.apache.spark.deploy.SparkSubmit.submit(SparkSubmitte.scala:184(网址:org.apache.spark.deploy.SparkSubmit.doSubmit(Sparksubit.scala:86(在org.apache.spark.deploy.SparkSubmit$$anon$2.doSubmit(SparkSubmit.scala:920(网址:org.apache.spark.deploy.SparkSubmit$.main(SparkSubmitte.scala:929(网址:org.apache.spark.deploy.SparkSubmit.main(SparkSubmitte.scala(

我确信问题出现在getSet行,它要求classOf[String],但我不确定用什么替换它。

这是我的表格定义:

-- auto-generated definition
create table name_table
(
name       text,
id_recent  text,
primary key (name)
)

您有不兼容的类型-数据库中有text类型,但您试图将其作为一组字符串检索([varchar <-> java.util.Set<java.lang.String>]消息直接说明了这一点(。

getSet替换为getString,如果您需要一个集合,那么您需要从检索到的字符串中自己构造它

最新更新