我正在尝试将一个csv文件读入Spark中的RDD中(使用Scala)。我已经制作了一个函数,该函数首先过滤数据,以便不考虑标头。

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


然后运行以下命令:

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


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

我收到“任务无法序列化”错误。有什么解决方案?

最佳答案

您很可能已在不可序列化的类中定义了isHeader方法。结果,isHeader绑定到该类的不可序列化的实例,然后通过闭包将其运送给执行者。

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

08-24 16:47