【发布时间】: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