当前位置: 首页 > 知识库问答 >
问题:

作为Spark作业提交时Spark RDD映射中的NullPointerException

郗浩
2023-03-14

18:02:55,271错误UTILS:91-中止任务java.lang.nullpointerException在org.apache.spark.sql.catalyst.expressions.generatedClass$GeneratedIterator.agg_doAggregateWithKeys$(未知源)在org.apache.spark.sql.catalyst.expressions.generatedClass$GeneratedIterator.processNext(未知源)在degenexec.scala:370)在scala.collection.iterator$$Anon$12。在org.apache.spark.sql.execution.datasources.defaultWriterContainer$$AnonFun$WriterOWS$1。在er.Scala:252)在org.apache.spark.util.utils$.trywithSafeFinallyandFailureCallbacks(utils.scala:1325)在org.apache.spark.sql.execution.datasources.defaultwritercontainer.writercontainers:258)在org.apache.spark.sql.execution.datasources.insertintohadoopfsrelationcommand$$anonfun$run$1$$anonfun$apply$mcv$sp$1.在org.apache.spark.sql.execution.datasources SP$1.Apply(InsertIntohadoopfsRelationCommand.scala:143)在org.apache.spark.scheduler.resulttask.runtask(resulttask.scala:70)在org.apache.spark.scheduler.task.run(task.scala:85)在org.apache.spark.executor.executor$taskrunner.run(executor.scala:274)在java.util.concurrent.threadpoolexecutor.runworker.run(thread.java:745)

据我们所知,这是在以下方法中发生的:

def process(dataFrame: DataFrame, S3bucket: String) = {
  dataFrame.map(row =>
      "text|label"
  ).coalesce(1).write.mode(SaveMode.Overwrite).text(S3bucket)
}

我们已经将其缩小到map函数,因为它在作为spark作业提交时工作:

def process(dataFrame: DataFrame, S3bucket: String) = {
  dataFrame.coalesce(1).write.mode(SaveMode.Overwrite).text(S3bucket)
}

有人知道是什么导致了这个问题吗?还有,我们怎么解决呢?我们被难倒了。

共有1个答案

杜高谊
2023-03-14

我认为,当worker试图访问一个SparkContext对象时,它会抛出一个NullPointerException,该对象只存在于驱动程序中,而不存在于worker中。

coalesce()重新分区数据。当您只请求一个分区时,它将尝试在一个分区中压缩所有数据*。这可能会给应用程序的内存占用带来很大压力。

一般情况下,最好不要只在1中收缩分区。

    null
 类似资料:
  • im关注亚马逊文档,向emr集群提交spark作业https://aws.amazon.com/premiumsupport/knowledge-center/emr-submit-spark-job-remote-cluster/ 在按照说明进行操作后,使用frecuent进行故障排除,它由于未解析的地址与消息类似而失败。 错误火花。SparkContext:初始化SparkContext时出错

  • 问题内容: 但是有很多歧义和提供的一些答案…包括在jars / executor / driver配置或选项中复制jar引用。 How ClassPath is affected Driver Executor (for tasks running) Both not at all Separation character: comma, colon, semicolon If provided

  • 一、作业提交 1.1 spark-submit Spark 所有模式均使用 spark-submit 命令提交作业,其格式如下: ./bin/spark-submit \ --class <main-class> \ # 应用程序主入口类 --master <master-url> \ # 集群的 Master Url --deploy-mode <deplo

  • 真的...已经讨论了很多。 然而,有很多模棱两可之处,提供的一些答案。。。包括在JAR/执行器/驱动程序配置或选项中复制JAR引用。 应为每个选项澄清以下歧义、不清楚和/或省略的细节: 类路径如何受到影响 驾驶员 执行器(用于正在运行的任务) 两者都有 一点也不 对于任务(给每个执行者) 方法 方法 或 ,或者 别忘了,spack-提交的最后一个参数也是一个. jar文件。 我知道在哪里可以找到主

  • 在集群UI上- 工人(奴隶)-工人-20160712083825-172.31.17.189-59433活着 已使用2个中的1个核心 活动阶段 /root/wordcount.py处的reduceByKey:23 悬而未决阶段 根据TaskSchedulerImpl:初始作业尚未接受任何资源;我分配的 火花环境变量 在奴隶身上复制了那些 Spark版本1.6.1 Ubuntu Amazon EC2

  • java.util.concurrent.executionException:java.lang.ClassCastException:com.hazelCast.mapreduce.aggregation.impl.DistrictValuesAggregation$SimpleEntry不能在com.hazelCast.mapreduce.impl.task.trackableJobFutu