Spark Scala

时间:2016-07-07 03:46:03

标签: java scala serialization apache-spark

我正在尝试将一个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不可序列化的错误。什么可以解决方案?

1 个答案:

答案 0 :(得分:0)

最有可能的是,您已在一个不可序列化的类中定义了您的isHeader方法。因此,isHeader绑定到所述类的非可序列化实例,然后通过闭包将其传送给执行程序。

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