【问题标题】:task not serializable spark REPL任务不可序列化 spark REPL
【发布时间】:2018-04-12 17:47:27
【问题描述】:

另一个基本错误

我正在尝试在 spark 上下文中读取文件并通过执行此操作跳过文件的标题

scala> val read = sc.textFile("/user/edureka/data/ls2014.tsv")
scala> val header = read.first
scala> val data = read.filter(row => (row != header))

使用这些我得到错误“org.apache.spark.SparkException: Task not serializable”。

序列化在这种情况下是如何工作的..想知道基本的以及为什么在这里出错。

注意:我知道还有其他方法可以跳过文件的标题。但是,我想知道在这种情况下序列化的概念。请分享您的观点。

【问题讨论】:

    标签: apache-spark read-eval-print-loop


    【解决方案1】:

    你有行,我假设你的意思是rec:

    val restfile = read.map(rec => row != header)
    

    应该是这样的:

    val restfile = read.map(rec => rec != header)
    

    可能 row 是您之前在 repl 中定义的不可序列化的内容,因此无法通过闭包自动传递给执行程序。

    【讨论】:

    • 我很抱歉。这是一个错字..我不是要添加行..它是“rec”
    • scala > val restfile = read.map(rec => rec != header) 时出现错误
    • 您更正的代码适用于我,带有随机文本文件。另外我假设您的意思是过滤器不是映射? map 会将每一行转换为 True 或 False
    • 是的,你是对的。我一直在尝试各种可能性。 “过滤器”是给出错误的原因。对此感到抱歉。你能运行过滤器吗?或者我们可以不使用过滤器吗?这如何导致序列化错误
    • 你是如何使用过滤器的?你能更新问题吗?
    猜你喜欢
    • 2018-04-06
    • 2021-03-16
    • 1970-01-01
    • 2015-12-16
    • 2017-03-21
    • 2016-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多