无法使Spark在Intellij Idea中的scala工作表中运行
如果我把下面的代码放在一个扩展apptrait的对象中,并使用Idea的无法使Spark在Intellij Idea中的scala工作表中运行,scala,apache-spark,intellij-idea,Scala,Apache Spark,Intellij Idea,如果我把下面的代码放在一个扩展apptrait的对象中,并使用Idea的run命令运行它,那么它运行起来就不会有问题 但是,当我尝试从工作表运行它时,会遇到以下情况之一: 1-如果第一行出现,我得到: 任务不可序列化:java.io.NotSerializableException:A$A34$A$A34 2-如果第一行被注释掉,我得到: 无法为内部类A$A35$A$A35$A12生成编码器 访问定义此类的范围 该项目是使用Idea的Scala插件创建的,这是my build.sbt: .
run
命令运行它,那么它运行起来就不会有问题
但是,当我尝试从工作表运行它时,会遇到以下情况之一:
1-如果第一行出现,我得到:
任务不可序列化:java.io.NotSerializableException:A$A34$A$A34
2-如果第一行被注释掉,我得到:
无法为内部类A$A35$A$A35$A12生成编码器
访问定义此类的范围
该项目是使用Idea的Scala插件创建的,这是my build.sbt:
...
scalaVersion := "2.10.6"
scalacOptions += "-unchecked"
libraryDependencies ++= Seq(
"org.apache.spark" % "spark-core_2.10" % "2.1.0",
"org.apache.spark" % "spark-sql_2.10" % "2.1.0",
"org.apache.spark" % "spark-mllib_2.10" % "2.1.0"
)
我试着回答这个问题。但我正在使用的Idea Ultimate 2017.1并不适用,而且,当我使用工作表时,如果可能的话,我宁愿不在工作表中添加额外的对象
如果我对dataset对象使用
collect()
方法并获得一个“Aclass”实例数组,那么也不会再有错误。导致错误的原因是试图直接使用DS。使用eclipse兼容模式(打开首选项->键入scala->在语言和框架中,选择scala->选择工作表->仅选择eclipse兼容模式)请参见我希望能够使用SparkSession对象。检查Eclipse兼容性模式也没有解决该问题。
...
scalaVersion := "2.10.6"
scalacOptions += "-unchecked"
libraryDependencies ++= Seq(
"org.apache.spark" % "spark-core_2.10" % "2.1.0",
"org.apache.spark" % "spark-sql_2.10" % "2.1.0",
"org.apache.spark" % "spark-mllib_2.10" % "2.1.0"
)