在Jupyter中使用Apache Toree内核的有限Scala语法

时间:2017-11-06 21:35:28

标签: scala apache-spark jupyter-notebook apache-toree

OS X El Capitan 10.11.6
Spark 2.2.0 (local)
Scala 2.11.8
Apache Toree Jupyter Kernel 0.2.0

根据我从this post收到的说明,我使用this Toree installer成功地将Spark - Scala内核包含在我的Jupyter笔记本中。但是,我注意到Scala语法非常有限。以下是两个例子:

1。无法手动创建DataFrame

以下代码适用于终端Spark shell:

val test = Seq(
        ("Brandon", "Erica"),
        ("Allen", "Sarabeth"),
        ("Jared", "Kyler")).
    toDF("guy", "girl")

但是当尝试使用Spark - Scala内核在Jupyter中运行时,我收到以下错误:

Name: Compile Error
Message: <console>:21: error: value toDF is not a member of Seq[(String, String)]
possible cause: maybe a semicolon is missing before `value toDF'?
       toDF("guy", "girl")
       ^

2。无法使用特定语法调用列名 似乎Jupyter Spark - Scala内核在使用$"columnName"调用时无法识别列,但确实识别使用df.col("columnName")调用的列。 $"columnName"语法会引发以下错误:

Name: Compile Error
Message: <console>:31: error: value $ is not a member of StringContext
   df.where($"columnName" =!= "NA").

我认为有一个高级解决方案可以让所有Spark Scala语法在Jupyter中使用,并期待社区的支持。

1 个答案:

答案 0 :(得分:1)

我找到了another post的答案,这也解决了我的问题:

val sqlC = new org.apache.spark.sql.SQLContext(sc)
import sqlC.implicits._ 

在笔记本电脑的开头运行它已经减轻了我​​以前的所有语法限制。