【问题标题】:Spark job getting stuck in local modeSpark 作业卡在本地模式
【发布时间】:2018-03-16 23:34:42
【问题描述】:

我面临一个问题,即我的 spark 作业在 IntelliJ idea 中运行时卡在本地。我的工作一直运行到像完成 200 个工作中的 199 个或完成 3 个任务中的 1 个这样的阶段,然后卡在那里。

我尝试在我的 IDE 中使用评估表达式查看发生了什么,并发现了一个奇怪的问题。如果我使用 myDf.rdd.map(r => r).cache() 我得到

java.io.IOException: Class not found
at org.apache.xbean.asm5.ClassReader.a(Unknown Source)
at org.apache.xbean.asm5.ClassReader.<init>(Unknown Source)
at org.apache.spark.util.ClosureCleaner$.getClassReader(ClosureCleaner.scala:40)
at org.apache.spark.util.ClosureCleaner$.getInnerClosureClasses(ClosureCleaner.scala:81)
at org.apache.spark.util.ClosureCleaner$.org$apache$spark$util$ClosureCleaner$$clean(ClosureCleaner.scala:187)
at org.apache.spark.util.ClosureCleaner$.clean(ClosureCleaner.scala:122)
at org.apache.spark.SparkContext.clean(SparkContext.scala:2067)
at org.apache.spark.rdd.RDD$$anonfun$map$1.apply(RDD.scala:324)
at org.apache.spark.rdd.RDD$$anonfun$map$1.apply(RDD.scala:323)
at org.apache.spark.rdd.RDDOperationScope$.withScope(RDDOperationScope.scala:150)
at org.apache.spark.rdd.RDDOperationScope$.withScope(RDDOperationScope.scala:111)
at org.apache.spark.rdd.RDD.withScope(RDD.scala:316)
at org.apache.spark.rdd.RDD.map(RDD.scala:323)
at org.apache.spark.sql.DataFrame.map(DataFrame.scala:1410)
at com.marin.jobcoordinator.spark.extractor.PoExtractorBase$GeneratedEvaluatorClass$18$1.invoke(FileToCompile.scala:66)

同时,如果我使用 myDf.rdd.collect 我没有看到这个问题。我也可以毫无问题地调用 myDf.show 。只是当我使用带有匿名身份功能的地图功能时,我遇到了这个问题。从异常中,我得到的是 spark 试图加载匿名函数类并出错?看起来很奇怪。

我使用的是 spark 版本 1.6.0

谢谢,

斯里拉姆

【问题讨论】:

  • 你能分享你的代码吗?
  • 我给出了代码的简化版本。看起来在使用 spark 程序时更多地与 IntelliJ 想法类加载有关。我能够在类似调用下的其他项目中重现相同的问题。
  • @sriram 你明白了吗?
  • @IonFreeman 我还没有解决这个问题。我只是求助于构建 jar 并在集群中运行它,而不是尝试从本地调试这个问题 - 因为确定这个问题的根本原因对我来说似乎需要很长时间。

标签: apache-spark


【解决方案1】:

对于您的第一个问题,完成 199 个任务然后卡在最后一个任务上,大多数情况下这是一个倾斜问题:您的数据分区严重。在进行可疑操作之前计算the number of elements for each partition 并打印它可能会给你一个提示。事先对数据进行重新分区和过滤(如果可能)会有所帮助。

同样使用 200 个分区意味着您(很可能)在数据混洗时使用 默认 分区数。请参阅此post 了解更多信息。您可以尝试更改它以适合您机器上的内核数量。

关于你的第二个问题,我帮不了你,对不起。

【讨论】:

    猜你喜欢
    • 2017-03-13
    • 2017-03-10
    • 2019-07-03
    • 1970-01-01
    • 1970-01-01
    • 2015-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多