首页 > 解决方案 > Scala 中如何解析导入的名称?(火花/齐柏林飞艇)

问题描述

我在 Zeppelin 中使用 Spark 解释器在一段中运行了一个脚本。它有一个导入,导入的名称可以从全局命名空间和函数中解析,但不能从类中的方法解析。

这在我的计算机安装的 Scala (2.12) 上运行良好,但在 Zeppelin (Scala 2.11) 中不起作用。

import java.util.Calendar

def myFun: String = {
    // this works
    return Calendar.getInstance.toString
}

class MyClass {
    def myFun(): String = {
      // this doesn't
      return Calendar.getInstance.toString

      // this works
      return java.util.Calendar.getInstance.toString
    }
}

错误信息如下:

import java.util.Calendar
myFun: String
<console>:15: error: not found: value Calendar
                 return Calendar.getInstance.toString

我错过了什么?

标签: scalaapache-sparkapache-zeppelin

解决方案


我想在 0.8.0 Zeppelin 引入了一个新的 SparkInterpreter,因此全局导入不起作用,并且导入必须在包装器内进行。

作为一种解决方法,可以将属性 zeppelin.spark.useNew 设置为值“false”。这会禁用 sparks 新解释器。


推荐阅读