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中使用,并期待社区的支持。
答案 0 :(得分:1)
我找到了another post的答案,这也解决了我的问题:
val sqlC = new org.apache.spark.sql.SQLContext(sc)
import sqlC.implicits._
在笔记本电脑的开头运行它已经减轻了我以前的所有语法限制。