Scala 中如何解析导入的名称? (火花/齐柏林飞艇)
Posted
技术标签:
【中文标题】Scala 中如何解析导入的名称? (火花/齐柏林飞艇)【英文标题】:How is an imported name resolved in Scala? (Spark / Zeppelin) 【发布时间】:2019-02-04 03:47:59 【问题描述】:我在 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
我错过了什么?
【问题讨论】:
1.11 ?你确定不是 2.11 吗? 是的,为错字道歉! 如果无法访问 Spark/Zeppelin,我推测这是该系统如何解释 Scala 脚本的错误。import
语句应该将 java.util.Calendar
带入范围,就像 Calendar
一样; 每个版本的Scala都应该尊重这一点!
您使用哪个版本的 zeppelin?我在 master 分支中没有看到这个问题。
@zjffdu 我在运行 0.8.0 时遇到了这个问题
【参考方案1】:
在 0.8.0 中,Zeppelin 引入了一个新的 SparkInterpreter,我想这是因为全局导入不起作用,并且导入必须在包装器内进行。
作为一种解决方法,可以将属性 zeppelin.spark.useNew 设置为值“false”。这会禁用 sparks 新解释器。
【讨论】:
以上是关于Scala 中如何解析导入的名称? (火花/齐柏林飞艇)的主要内容,如果未能解决你的问题,请参考以下文章