Zeppelin с интерпретатором Spark игнорирует импорт, объявленный вне определения класса / функции - PullRequest
0 голосов
/ 04 сентября 2018

Я пытаюсь использовать некоторый код Scala в Zeppelin 0.8.0 с интерпретатором 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 при использовании.

ВОПРОС: Как импортировать данные вне определения класса / функции?

1 Ответ

0 голосов
/ 21 сентября 2018

Импорт по 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

Надеюсь, это поможет!

...