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

根据我从这篇文章Spark - Scala中收到的说明,我已经使用这个 Toree 安装程序成功地将一个内核包含到了我的 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. 无法使用特定语法调用列名 似乎 JupyterSpark - 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 中使用,并期待社区的支持。

4

1 回答 1

1

我找到了另一个帖子的答案,该帖子也解决了我的问题:

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

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

于 2017-11-06T21:55:12.707 回答