Sparkインタープリターを備えたZeppelinは、クラス/関数定義の外部で宣言されたインポートを無視します

バプティスト・メルリオット

SparkインタープリターでZeppelin0.8.0のScalaコードを使用しようとしています。

%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、使用時に直接指定すると、すべてが正常に機能すると思います

質問:クラス/関数定義の外部にインポートするにはどうすればよいですか?

遠吠え

によるインポートpath.to.package.Classはツェッペリンでうまく機能します。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

お役に立てば幸いです。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

Related 関連記事

ホットタグ

アーカイブ