【问题标题】:Spark 2.0 Scala import statementsSpark 2.0 Scala 导入语句
【发布时间】:2017-01-25 05:02:40
【问题描述】:

在 Spark 1.6.2 (Scala 2.10.5) 上,以下代码在 shell 中运行良好:

import org.apache.spark.mllib.linalg.Vector
case class DataPoint(vid: String, label: Double, features: Vector)

mllib 向量正确地覆盖了 Scala 向量。

但是,在 Spark 2.0 (Scala 2.11.8) 上,相同的代码会在 shell 中引发以下错误:

<console>:11: error: type Vector takes type parameters
  case class DataPoint(vid: String, label: Double, features: Vector)

为了让它工作,我现在必须明确地命名这个类:

case class DataPoint(vid: String, label: Double,
  features: org.apache.spark.mllib.linalg.Vector)

谁能告诉我发生了什么变化,Spark 或 Scala 是否有问题?谢谢!

【问题讨论】:

  • 他们改变了 spark shell 的导入方式,并且存在一些突出的错误。你是说从 shell 运行吗?
  • @som-snytt 是的,我正在从 shell 运行 - 谢谢 - 更新了问题。好的,那么它很可能是一个错误。

标签: scala apache-spark apache-spark-mllib


【解决方案1】:

这个问题最简单的解决方法就是一个简单的paste

Welcome to
      ____              __
     / __/__  ___ _____/ /__
    _\ \/ _ \/ _ `/ __/  '_/
   /___/ .__/\_,_/_/ /_/\_\   version 2.1.0-SNAPSHOT
      /_/

Using Scala version 2.11.8 (OpenJDK 64-Bit Server VM, Java 1.8.0_102)
Type in expressions to have them evaluated.
Type :help for more information.

scala> import org.apache.spark.mllib.linalg.Vector
import org.apache.spark.mllib.linalg.Vector

scala> case class DataPoint(vid: String, label: Double, features: Vector)
<console>:11: error: type Vector takes type parameters
       case class DataPoint(vid: String, label: Double, features: Vector)
                                                                  ^

scala> :paste
// Entering paste mode (ctrl-D to finish)

import org.apache.spark.mllib.linalg.Vector
case class DataPoint(vid: String, label: Double, features: Vector)

// Exiting paste mode, now interpreting.

import org.apache.spark.mllib.linalg.Vector
defined class DataPoint

【讨论】:

  • 谢谢@zero323 - 您的解决方案确实有效!能否请您详细说明它的工作原理?
  • 与逐行工作的不同之处在于将整个块编译在一起。您基本上可以通过将所有内容放在同一个块中来做同样的事情,例如{import ....; case class DataPoint(...)}(我知道,没用)或用单个对象包装。但是如果你问如何在上游解决这个问题,我不知道。 Spark 对 shell 进行了认真的修改,那里有很多丑陋的错误,包括 case class monster
猜你喜欢
  • 2017-01-01
  • 2019-03-18
  • 2016-12-22
  • 1970-01-01
  • 2016-04-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多