Scala 将cassandra行映射到Spark RDD中的参数化类型

Scala 将cassandra行映射到Spark RDD中的参数化类型,scala,apache-spark,spark-cassandra-connector,Scala,Apache Spark,Spark Cassandra Connector,我正在尝试使用spark cassandra连接器将cassandra行映射到参数化类型。我一直在尝试使用隐式定义的columnMapper定义映射,因此: class Foo[T<:Bar:ClassTag:RowReaderFactory] { implicit object Mapper extends JavaBeanColumnMapper[T]( Map("id" -> "id", "timestamp" -> "ts")) def

我正在尝试使用
spark cassandra连接器
将cassandra行映射到参数化类型。我一直在尝试使用隐式定义的columnMapper定义映射,因此:

class Foo[T<:Bar:ClassTag:RowReaderFactory] {
  implicit object Mapper extends JavaBeanColumnMapper[T](
    Map("id" -> "id",
        "timestamp" -> "ts"))

  def doSomeStuff(operations: CassandraTableScanRDD[T]): Unit = {
    println("do some stuff here")
  }
}

事实证明,
columnMapper
必须在创建
Foo
实例的范围内创建,而不是在
Foo
本身中创建。

您可以在Foo的伴生对象中定义该隐式对象,如下所示:

object Foo {
  implicit object Mapper extends JavaBeanColumnMapper[T](
    Map("id" -> "id",
        "timestamp" -> "ts"))
}
Scala在试图找到一个类的隐式实例时,会查找该类的伴生对象。如果需要的话,可以在需要隐式的范围内定义它,但是您可能希望添加到伴随对象中,这样就不需要在需要时重复它

object Foo {
  implicit object Mapper extends JavaBeanColumnMapper[T](
    Map("id" -> "id",
        "timestamp" -> "ts"))
}