【问题标题】:UnsupportedOperationExeception when writing in Cassandra table在 Cassandra 表中写入时出现 UnsupportedOperationException
【发布时间】:2018-01-24 12:39:36
【问题描述】:

我有以下课程:

case class AucLog(timestamp:  UUID, modelname: String, good: Int,
              list: List[Double])

class AucDatabase(override val connector : CassandraConnection)
extends Database[AucDatabase](connector) {
object users extends CMetrics with Connector
}
object AucDatabase extends AucDatabase(AucConnector.connector)

abstract class AucMetrics extends Table[AucMetrics, AucLog] {
 object id extends UUIDColumn with PartitionKey
 object name extends StringColumn
 object ud extends IntColumn
 object zob extends ListColumn[Double]
}

abstract class CMetrics extends AucMetrics with RootConnector {  
def store(metric : AucLog): Future[ResultSet] = {
insert.value(_.id, metric.timestamp)
  .value(_.name, metric.modelname)
  .value(_.ud, metric.good)
  .value(_.zob, metric.list)
  .consistencyLevel_=(ConsistencyLevel.ONE)
  .future()

}

DmpDatabase.create()
AucDatabase.create()

val pd = DmpDatabase.users.myselect()

val timeout = new Timeout(500000)
val result = Await.result(pd, timeout.duration)

"<--- this attempt to read from my database is working - no problemo   ---> "
val todf = result.records.map { elem => elem.idcat }
val rdd = spark.sparkContext.parallelize(todf)

import spark.implicits._
rdd.toDF().show(100)

---> I'm storing one line in my database to be sure that it is not empty when 
   i'm reading it. 
AucDatabase.users.store(new AucLog(UUIDs.timeBased(), "tyron", 0, List(0.1)))
val second = AucDatabase.users.myselect()
val resultmetric = Await.result(second, timeout.duration)

 -----> this line cause the Execption
val r = spark.sparkContext.parallelize(resultmetric.records).toDF().show(

我不明白的是,我对两个数据库做的事情基本上是一样的。然而,一个是抛出以下错误: UnsupportedOperationException : No encoder found for com.outworkers.phantom.dsl.UUID.

谢谢。

【问题讨论】:

    标签: scala cassandra phantom-dsl


    【解决方案1】:

    首先store 方法是宏生成的,所以你不需要创建一个。您遇到的问题可能根本与幻象无关,而是与某种 Spark 构造有关。

    幻象UUID 只不过是java.util.UUID 的类型别名,所以我很惊讶没有默认类型的直接编码器。如果你帮我知道 Encoder 类的全名,包括包,我可以明确地弄清楚什么是坏的。

    【讨论】:

    • 我发现我的错误并没有更新这篇文章的状态。错误是我试图将向量转换为 store 函数中的列表。此时执行演员阵容正在产生这个错误。谢谢你试图帮助我:)
    猜你喜欢
    • 2020-12-20
    • 2019-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-20
    • 2021-10-20
    • 2020-03-19
    • 2012-02-24
    相关资源
    最近更新 更多