【问题标题】:Task not serializable error in Spark ScalaSpark Scala中的任务不可序列化错误
【发布时间】:2016-07-07 03:46:02
【问题描述】:

我正在尝试将 csv 文件读入 Spark 中的 RDD(使用 Scala)。我已经做了一个函数来首先过滤数据,这样它就不会考虑标题。

def isHeader(line: String): Boolean = {
line.contains("id_1")
}

然后我正在运行以下命令:

val noheader = rawblocks.filter(x => !isHeader(x))

rawblocks RDD 从 26MB 大小的 csv 文件中读取数据

我收到 Task not serializable 错误。有什么解决办法?

【问题讨论】:

  • 如上。 TaskNotSerializable 意味着调用函数的类中的其他内容不可序列化。如果您提供更多外部代码,我们可以提供帮助。此外,您的堆栈应该说明哪个类不可序列化。

标签: java scala serialization apache-spark


【解决方案1】:

很可能,您在一个不可序列化的类中定义了您的 isHeader 方法。因此, isHeader 与所述类的不可序列化实例相关联,然后通过闭包将其发送到执行器。

您可能希望在单独的对象中定义 isHeader,或者使封闭类可序列化(这不是一个好习惯,因为您仍将随作业一起运送整个类实例,这不是预期的)。

【讨论】:

    猜你喜欢
    • 2017-09-21
    • 2020-02-04
    • 2015-12-16
    • 1970-01-01
    • 1970-01-01
    • 2023-04-02
    • 2017-08-24
    • 2021-08-12
    • 2016-09-14
    相关资源
    最近更新 更多