gpt4 book ai didi

scala - 无法使 Spark 在 Intellij Idea 中的 scala 工作表内运行

转载 作者:行者123 更新时间:2023-12-02 01:13:36 26 4
gpt4 key购买 nike

如果我将以下代码放入扩展 App 特征的对象中并使用 Idea 的 run 命令运行它,则运行不会出现任何问题。

但是,当我尝试从工作表运行它时,我遇到了以下情况之一:

1-如果第一行存在,我得到:

Task not serializable: java.io.NotSerializableException:A$A34$A$A34

2-如果第一行被注释掉,我得到:

Unable to generate an encoder for inner class A$A35$A$A35$A12 without access to the scope that this class was defined in.

//First line!
org.apache.spark.sql.catalyst.encoders.OuterScopes.addOuterScope(this)

import org.apache.spark.sql.SparkSession
import org.apache.spark.sql.types.{IntegerType, StructField, StructType}

case class AClass(id: Int, f1: Int, f2: Int)
val spark = SparkSession.builder()
.master("local[*]")
.appName("Test App")
.getOrCreate()
import spark.implicits._

val schema = StructType(Array(
StructField("id", IntegerType),
StructField("f1", IntegerType),
StructField("f2", IntegerType)))

val df = spark.read.schema(schema)
.option("header", "true")
.csv("dataset.csv")

// Displays the content of the DataFrame to stdout
df.show()
val ads = df.as[AClass]

//This is the line that causes serialization error
ads.foreach(x => println(x))

该项目是使用 Idea 的 Scala 插件创建的,这是我的 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"
)

我尝试了 this 中的解决方案回答。但它不适用于我正在使用的 Idea Ultimate 2017.1,而且,当我使用工作表时,如果可能的话,我宁愿不向工作表添加额外的对象。

如果我在数据集对象上使用 collect() 方法并获取“Aclass”实例数组,也不会再出现错误。它试图直接与 DS 一起工作导致错误。

最佳答案

使用 eclipse 兼容模式(打开 Preferences-> 输入 scala -> 在 Languages & Frameworks 中,选择 Scala -> 选择 Worksheet -> 仅选择 eclipse 兼容模式)参见 https://gist.github.com/RAbraham/585939e5390d46a7d6f8

关于scala - 无法使 Spark 在 Intellij Idea 中的 scala 工作表内运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43224742/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com