【问题标题】:No implicits found for parameter evidence没有发现参数证据的隐含
【发布时间】:2020-04-08 20:01:42
【问题描述】:

我在 scala 应用程序中有一行代码,它采用一列两行的数据框,并将它们分配给变量 startend

val Array(start, end) = datesInt.map(_.getInt(0)).collect()

这段代码在 REPL 中运行时运行良好,但是当我尝试在 Intellij 的 scala 对象中放入同一行时,它会在 .collect() 语句之前插入一个灰色的 (?: Encoder[Int]),并显示内联错误 @987654326 @

我对 scala 很陌生,我不知道如何解决这个问题。

【问题讨论】:

    标签: scala apache-spark


    【解决方案1】:

    Spark 需要知道如何序列化 JVM 类型以将它们从 worker 发送到 master。在某些情况下,它们可以自动生成,并且对于某些类型,Spark 开发人员会编写显式实现。在这种情况下,您可以隐式传递它们。如果您的SparkSession 被命名为spark,那么您会错过以下行:

    import spark.implicits._
    

    由于您是 Scala 新手:隐式是您不必显式传递的参数。在您的示例中,map 函数需要 Encoder[Int]。通过添加这个导入,它将被包含在作用域中,从而自动传递给map 函数。

    查看Scala documentation了解更多信息。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-06-29
      • 1970-01-01
      • 2017-04-26
      • 2020-05-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多