【问题标题】:could not find implicit value for evidence parameter of type - Spark找不到类型的证据参数的隐式值 - Spark
【发布时间】:2015-12-18 11:10:19
【问题描述】:

我是 Scala 和 spark 的新手,可以就上述错误提供一些帮助。 这是导致问题的我的代码的 sn-p:

case class Session (user_id: String, creation_date: BigInt, offline: Boolean)
case class User (user_id: String, app_id: Int, vendor_code: String, app_version: String)

val users = sc.cassandraTable[User]("leech_seed", "user").select("user_id", "app_id", "vendor_code", "app_version").where("last_active >=" + (timestamp - 86400000))
val sessions = sc.cassandraTable[Session]("leech_seed", "session").select("user_id", "creation_date", "offline").where("creation_date < " + timestamp + " AND creation_date >=" + (timestamp - 86400000))

当我在 spark shell 中使用此代码时,它工作正常,但是当我尝试使用 sbt 构建 jar 时,我收到以下错误 could not find implicit value for evidence parameter of type com.datastax.spark.connector.rdd.reader.RowReaderFactory[User]

这比我承认的时间更长,所以任何帮助/见解都将不胜感激。

注意:我使用的是datastax cassandra connector作为spark

【问题讨论】:

  • 您使用的是哪个 spark-cassandra 连接器?
  • 我正在使用 scala 2.10 连接器
  • 我也应该问一下 Cassandra 的哪个版本?
  • 这是本月的更新 - 我在问,因为我在使用具有不同连接器版本的某些 Spark 版本时遇到了类似的错误。目前我正在使用 Spark 1.4.1 和 2.10-1.4.0-M3 没有问题。
  • 是的,这是一个标准的 - 你的案例类需要在你的主要方法之外声明

标签: scala cassandra apache-spark


【解决方案1】:

检查您的 spark-cassandra 连接器版本是否与您正在使用的 Spark 版本保持一致。我在 Spark 1.4.1 中使用早于 2.10-1.4.0-M3 的连接器版本时遇到了这些问题。

还要确保你的案例类是在你的 main 方法之外定义的——否则你会遇到No RowReaderFactory can be found for this type或类似的情况。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-25
    • 2013-01-25
    • 2017-04-26
    • 2021-05-01
    • 1970-01-01
    • 2020-09-14
    相关资源
    最近更新 更多