【问题标题】:Apache Spark: NPE during restoring state from checkpointApache Spark:从检查点恢复状态期间的 NPE
【发布时间】:2017-07-05 10:12:02
【问题描述】:

我们正在构建使用 HBase RDD 与传入 DStream 连接的简单 Streaming 应用程序。 示例代码:

val indexState = sc.newAPIHadoopRDD(
  conf,
  classOf[TableInputFormat],
  classOf[ImmutableBytesWritable],
  classOf[Result]).map { case (rowkey, v) => //some logic}

val result = dStream.transform { rdd =>
  rdd.leftOuterJoin(indexState)
}  

它工作正常,但是当我们为 StreamingContext 启用检查点时 并让应用程序从先前创建的检查点中恢复, 它总是抛出 NullPointerException。

ERROR streaming.StreamingContext: Error starting the context, marking it as stopped
java.lang.NullPointerException
        at org.apache.hadoop.hbase.mapreduce.TableInputFormat.setConf(TableInputFormat.java:119)
        at org.apache.spark.rdd.NewHadoopRDD.getPartitions(NewHadoopRDD.scala:120)
        at org.apache.spark.rdd.RDD$$anonfun$partitions$2.apply(RDD.scala:239)
        at org.apache.spark.rdd.RDD$$anonfun$partitions$2.apply(RDD.scala:237)
        at scala.Option.getOrElse(Option.scala:120)
        at org.apache.spark.rdd.RDD.partitions(RDD.scala:237)
        at org.apache.spark.rdd.MapPartitionsRDD.getPartitions(MapPartitionsRDD.scala:35)
        at org.apache.spark.rdd.RDD$$anonfun$partitions$2.apply(RDD.scala:239)
        at org.apache.spark.rdd.RDD$$anonfun$partitions$2.apply(RDD.scala:237)
        at scala.Option.getOrElse(Option.scala:120)

有人遇到过同样的问题吗? 版本:

  • Spark 1.6.x
  • Hadoop 2.7.x

谢谢!

【问题讨论】:

  • 当您说“以前创建的检查点”时,这是否意味着流作业已停止并重新提交?

标签: hadoop apache-spark hbase spark-streaming


【解决方案1】:

Spark Streaming 检查点不能用于从以前的作业中恢复,至少在 1.6.x 中是这样。如果您的作业停止并重新提交,则无法重新使用检查点数据。在提交作业之前,您必须删除所有旧的检查点数据。

[R]无法从升级前代码的早期检查点信息重新开始。检查点信息本质上包含序列化的 Scala/Java/Python 对象,尝试使用新的、修改的类反序列化对象可能会导致错误。在这种情况下,要么使用不同的检查点目录启动升级后的应用,要么删除之前的检查点目录。

Upgrading the code - checkpointing

【讨论】:

  • 这是否意味着检查点仅适用于 dstream 而我们在使用任何一侧 rdd 时都不能使用它们?
  • 您的用法很好,但是检查点允许驱动程序恢复,它不支持通过 spark-submit 停止和启动整个流式传输作业。
  • 我发现在没有任何代码更改的情况下重新启动流式作业时也是如此这是不正确的。只要未进行任何更改,使用现有数据重新启动失败的作业就没有问题。
  • 嗯,可能是用户错误,或者我的记性不好。我会删除那段,以免无意中误导。
猜你喜欢
  • 1970-01-01
  • 2020-10-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-18
相关资源
最近更新 更多