【发布时间】:2017-01-09 06:04:47
【问题描述】:
我使用 spark cassandra 连接器编写了一个应用程序。现在,当 spark-submit 作业时,我收到错误 java.lang.IllegalArgumentException: requirements failed: No mappable properties found in class: MailBox ,即使我定义了 https://github.com/datastax/spark-cassandra-connector/blob/master/doc/6_advanced_mapper.md 中指定的类型转换器,我的想法是我需要一个 MailBox 的伴随对象,我在其中定义了一个映射器,但我在文档中找不到它的示例。有谁知道如何解决这个问题?谢谢
代码:
object Test {
case class Size(size: Long) {
if (size < 0) throw new IllegalArgumentException
def +(s: Size): Size = Size(size + s.size)
}
object LongToSizeConverter extends TypeConverter[Size] {
def targetTypeTag = typeTag[Size]
def convertPF = { case long: Long => Size(long) }
}
object SizeToLongConverter extends TypeConverter[Long] {
def targetTypeTag = typeTag[Long]
def convertPF = { case Size(long) => long.toLong }
}
case class MailBox(id: String,totalsize: Size)
case class Id(mailboxid:String)
object StringToIdConverter extends TypeConverter[Id] {
def targetTypeTag = typeTag[Id]
def convertPF = { case str: String => Id(str)
case str: UUID => Id(str.toString) }
}
object IdToStringConverter extends TypeConverter[String] {
def targetTypeTag = typeTag[String]
def convertPF = { case Id(str) => str.toString }
}
def main(args: Array[String]) {
val sc = new SparkContext();
TypeConverter.registerConverter(StringToIdConverter)
TypeConverter.registerConverter(IdToStringConverter)
TypeConverter.registerConverter(LongToSizeConverter)
TypeConverter.registerConverter(SizeToLongConverter)
val test= sc.parallelize(Array(MailBox(Id("1"),Size(10))))
test.saveAsCassandraTable("test","Mailbox")
}
}
【问题讨论】:
-
您使用的是哪个版本?请指定 Spark、Cassandra 和 Connector。
-
她是我的 build.sbt 文件:scalaVersion := "2.10.5" version := "0.13.12" libraryDependencies += "org.apache.spark" %% "spark-core" % "1.6.0" libraryDependencies += "org.apache.spark" %% "spark-sql" % "1.6.0" libraryDependencies += "com.datastax.spark" %% "spark-cassandra- connector" % "1.6 .0" resolvers += "Spark Packages Repo" at "dl.bintray.com/spark-packages/maven" libraryDependencies += "datastax" % "spark-cassandra-connector" % "1.6.0-s_2.10"
标签: scala apache-spark cassandra spark-cassandra-connector