我正在尝试将一个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,或者使封闭的类可序列化(这不是一个好习惯,因为您仍将随作业一起运送整个类实例,这是不希望的)。