我正在尝试将一个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不可序列化的错误。什么可以解决方案?
答案 0 :(得分:0)
最有可能的是,您已在一个不可序列化的类中定义了您的isHeader方法。因此,isHeader绑定到所述类的非可序列化实例,然后通过闭包将其传送给执行程序。
您可能希望在单独的对象中定义isHeader,或者使封闭类可序列化(这不是一个好的做法,因为您仍将使用您的作业运送整个类实例,这不是预期的)。