带有 Spark 解释器的 Zeppelin 忽略在 class/function 定义之外声明的导入
Zeppelin with Spark interpreter ignores imports declared outside of class/function definition
我正在尝试在 Zeppelin 0.8.0 中使用一些 Scala 代码和 Spark 解释器:
%spark
import scala.beans.BeanProperty
class Node(@BeanProperty val parent: Option[Node]) {
}
但是似乎没有考虑进口
import scala.beans.BeanProperty
<console>:14: error: not found: type BeanProperty
@BeanProperty val parent: Option[Node]) {
^
编辑: 我发现以下代码有效:
class Node(@scala.beans.BeanProperty val parent: Option[Node]) {
}
这也很好用:
def loadCsv(CSVPATH: String): DataFrame = {
import org.apache.spark.sql.types._
//[...] some code
val schema = StructType(
firstRow.map(s => StructField(s, StringType))
)
//[…] some code again
}
所以我想如果它在大括号之间导入或者在使用时直接用 path.to.package.Class
指定,我想一切正常。
问题: 如何在 class/function 定义之外导入?
通过 path.to.package.Class
导入在 Zeppelin 中运行良好。您可以尝试导入和使用 java.sql.Date
;
import java.sql.Date
val date = Date.valueOf("2019-01-01")
问题是关于 Zeppelin 上下文。如果您尝试在 Zeppelin 中使用以下代码片段,您会发现它工作正常;
object TestImport {
import scala.beans.BeanProperty
class Node(@BeanProperty val parent: Option[Node]){}
}
val testObj = new TestImport.Node(None)
testObj.getParent
//prints Option[Node] = None
希望对您有所帮助!
我正在尝试在 Zeppelin 0.8.0 中使用一些 Scala 代码和 Spark 解释器:
%spark
import scala.beans.BeanProperty
class Node(@BeanProperty val parent: Option[Node]) {
}
但是似乎没有考虑进口
import scala.beans.BeanProperty
<console>:14: error: not found: type BeanProperty
@BeanProperty val parent: Option[Node]) {
^
编辑: 我发现以下代码有效:
class Node(@scala.beans.BeanProperty val parent: Option[Node]) {
}
这也很好用:
def loadCsv(CSVPATH: String): DataFrame = {
import org.apache.spark.sql.types._
//[...] some code
val schema = StructType(
firstRow.map(s => StructField(s, StringType))
)
//[…] some code again
}
所以我想如果它在大括号之间导入或者在使用时直接用 path.to.package.Class
指定,我想一切正常。
问题: 如何在 class/function 定义之外导入?
通过 path.to.package.Class
导入在 Zeppelin 中运行良好。您可以尝试导入和使用 java.sql.Date
;
import java.sql.Date
val date = Date.valueOf("2019-01-01")
问题是关于 Zeppelin 上下文。如果您尝试在 Zeppelin 中使用以下代码片段,您会发现它工作正常;
object TestImport {
import scala.beans.BeanProperty
class Node(@BeanProperty val parent: Option[Node]){}
}
val testObj = new TestImport.Node(None)
testObj.getParent
//prints Option[Node] = None
希望对您有所帮助!