【问题标题】:Spark give Null pointer exception during InputSplit for HbaseSpark在Hbase的InputSplit期间给出Null指针异常
【发布时间】:2015-04-14 03:56:02
【问题描述】:

我正在使用 Spark 1.2.1、Hbase 0.98.10 和 Hadoop 2.6.0。从 hbase 检索数据时出现空点异常。 在下面找到堆栈跟踪。

[sparkDriver-akka.actor.default-dispatcher-2] 调试 NewHadoopRDD - 无法使用 InputSplit#getLocationInfo。 java.lang.NullPointerException:空在 scala.collection.mutable.ArrayOps$ofRef$.length$extension(ArrayOps.scala:114) ~[scala-library-2.10.4.jar:na] 在 scala.collection.mutable.ArrayOps$ofRef.length(ArrayOps.scala:114) ~[scala-library-2.10.4.jar:na] 在 scala.collection.IndexedSeqOptimized$class.foreach(IndexedSeqOptimized.scala:32) ~[scala-library-2.10.4.jar:na] 在 scala.collection.mutable.ArrayOps$ofRef.foreach(ArrayOps.scala:108) ~[scala-library-2.10.4.jar:na] 在 org.apache.spark.rdd.HadoopRDD$.convertSplitLocationInfo(HadoopRDD.scala:401) ~[spark-core_2.10-1.2.1.jar:1.2.1] 在 org.apache.spark.rdd.NewHadoopRDD.getPreferredLocations(NewHadoopRDD.scala:215) ~[spark-core_2.10-1.2.1.jar:1.2.1] 在 org.apache.spark.rdd.RDD$$anonfun$preferredLocations$2.apply(RDD.scala:234) [spark-core_2.10-1.2.1.jar:1.2.1] 在 org.apache.spark.rdd.RDD$$anonfun$preferredLocations$2.apply(RDD.scala:234) [spark-core_2.10-1.2.1.jar:1.2.1] 在 scala.Option.getOrElse(Option.scala:120) [scala-library-2.10.4.jar:na] 在 org.apache.spark.rdd.RDD.preferredLocations(RDD.scala:233) [spark-core_2.10-1.2.1.jar:1.2.1] 在 org.apache.spark.scheduler.DAGScheduler.org$apache$spark$scheduler$DAGScheduler$$getPreferredLocsInternal(DAGScheduler.scala:1326) [spark-core_2.10-1.2.1.jar:1.2.1] 在 org.apache.spark.scheduler.DAGScheduler$$anonfun$org$apache$spark$scheduler$DAGScheduler$$getPreferredLocsInternal$2$$anonfun$apply$2.apply$mcVI$sp(DAGScheduler.scala:1336) [spark-core_2.10-1.2.1.jar:1.2.1] 在 org.apache.spark.scheduler.DAGScheduler$$anonfun$org$apache$spark$scheduler$DAGScheduler$$getPreferredLocsInternal$2$$anonfun$apply$2.apply(DAGScheduler.scala:1335) [spark-core_2.10-1.2.1.jar:1.2.1] 在 org.apache.spark.scheduler.DAGScheduler$$anonfun$org$apache$spark$scheduler$DAGScheduler$$getPreferredLocsInternal$2$$anonfun$apply$2.apply(DAGScheduler.scala:1335) [spark-core_2.10-1.2.1.jar:1.2.1] 在 scala.collection.immutable.List.foreach(List.scala:318) [scala-library-2.10.4.jar:na] 在 org.apache.spark.scheduler.DAGScheduler$$anonfun$org$apache$spark$scheduler$DAGScheduler$$getPreferredLocsInternal$2.apply(DAGScheduler.scala:1335) [spark-core_2.10-1.2.1.jar:1.2.1] 在 org.apache.spark.scheduler.DAGScheduler$$anonfun$org$apache$spark$scheduler$DAGScheduler$$getPreferredLocsInternal$2.apply(DAGScheduler.scala:1333) [spark-core_2.10-1.2.1.jar:1.2.1] 在 scala.collection.immutable.List.foreach(List.scala:318) [scala-library-2.10.4.jar:na] 在 org.apache.spark.scheduler.DAGScheduler.org$apache$spark$scheduler$DAGScheduler$$getPreferredLocsInternal(DAGScheduler.scala:1333) [spark-core_2.10-1.2.1.jar:1.2.1] 在 org.apache.spark.scheduler.DAGScheduler$$anonfun$org$apache$spark$scheduler$DAGScheduler$$getPreferredLocsInternal$2$$anonfun$apply$2.apply$mcVI$sp(DAGScheduler.scala:1336) [spark-core_2.10-1.2.1.jar:1.2.1] 在 org.apache.spark.scheduler.DAGScheduler$$anonfun$org$apache$spark$scheduler$DAGScheduler$$getPreferredLocsInternal$2$$anonfun$apply$2.apply(DAGScheduler.scala:1335) [spark-core_2.10-1.2.1.jar:1.2.1] 在 org.apache.spark.scheduler.DAGScheduler$$anonfun$org$apache$spark$scheduler$DAGScheduler$$getPreferredLocsInternal$2$$anonfun$apply$2.apply(DAGScheduler.scala:1335) [spark-core_2.10-1.2.1.jar:1.2.1] 在 scala.collection.immutable.List.foreach(List.scala:318) [scala-library-2.10.4.jar:na] 在 org.apache.spark.scheduler.DAGScheduler$$anonfun$org$apache$spark$scheduler$DAGScheduler$$getPreferredLocsInternal$2.apply(DAGScheduler.scala:1335) [spark-core_2.10-1.2.1.jar:1.2.1] 在 org.apache.spark.scheduler.DAGScheduler$$anonfun$org$apache$spark$scheduler$DAGScheduler$$getPreferredLocsInternal$2.apply(DAGScheduler.scala:1333) [spark-core_2.10-1.2.1.jar:1.2.1] 在 scala.collection.immutable.List.foreach(List.scala:318) [scala-library-2.10.4.jar:na] 在 org.apache.spark.scheduler.DAGScheduler.org$apache$spark$scheduler$DAGScheduler$$getPreferredLocsInternal(DAGScheduler.scala:1333) [spark-core_2.10-1.2.1.jar:1.2.1] 在 org.apache.spark.scheduler.DAGScheduler.getPreferredLocs(DAGScheduler.scala:1304) [spark-core_2.10-1.2.1.jar:1.2.1] 在 org.apache.spark.scheduler.DAGScheduler$$anonfun$17.apply(DAGScheduler.scala:862) [spark-core_2.10-1.2.1.jar:1.2.1] 在 org.apache.spark.scheduler.DAGScheduler$$anonfun$17.apply(DAGScheduler.scala:859) [spark-core_2.10-1.2.1.jar:1.2.1] 在 scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:244) [scala-library-2.10.4.jar:na] 在 scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:244) [scala-library-2.10.4.jar:na] 在 scala.collection.Iterator$class.foreach(Ite​​rator.scala:727) [scala-library-2.10.4.jar:na] 在 scala.collection.AbstractIterator.foreach(Ite​​rator.scala:1157) [scala-library-2.10.4.jar:na] 在 scala.collection.IterableLike$class.foreach(Ite​​rableLike.scala:72) [scala-library-2.10.4.jar:na] 在 scala.collection.AbstractIterable.foreach(Ite​​rable.scala:54) [scala-library-2.10.4.jar:na] 在 scala.collection.TraversableLike$class.map(TraversableLike.scala:244) [scala-library-2.10.4.jar:na] 在 scala.collection.AbstractTraversable.map(Traversable.scala:105) [scala-library-2.10.4.jar:na] 在 org.apache.spark.scheduler.DAGScheduler.org$apache$spark$scheduler$DAGScheduler$$submitMissingTasks(DAGScheduler.scala:859) [spark-core_2.10-1.2.1.jar:1.2.1] 在 org.apache.spark.scheduler.DAGScheduler.org$apache$spark$scheduler$DAGScheduler$$submitStage(DAGScheduler.scala:778) [spark-core_2.10-1.2.1.jar:1.2.1] 在 org.apache.spark.scheduler.DAGScheduler.handleJobSubmitted(DAGScheduler.scala:762) [spark-core_2.10-1.2.1.jar:1.2.1] 在 org.apache.spark.scheduler.DAGSchedulerEventProcessActor$$anonfun$receive$2.applyOrElse(DAGScheduler.scala:1389) [spark-core_2.10-1.2.1.jar:1.2.1] 在 akka.actor.Actor$class.aroundReceive(Actor.scala:465) [akka-actor_2.10-2.3.4-spark.jar:na] 在 org.apache.spark.scheduler.DAGSchedulerEventProcessActor.aroundReceive(DAGScheduler.scala:1375) [spark-core_2.10-1.2.1.jar:1.2.1] 在 akka.actor.ActorCell.receiveMessage(ActorCell.scala:516) [akka-actor_2.10-2.3.4-spark.jar:na] 在 akka.actor.ActorCell.invoke(ActorCell.scala:487) [akka-actor_2.10-2.3.4-spark.jar:na] 在 akka.dispatch.Mailbox.processMailbox(Mailbox.scala:238) [akka-actor_2.10-2.3.4-spark.jar:na] 在 akka.dispatch.Mailbox.run(Mailbox.scala:220) [akka-actor_2.10-2.3.4-spark.jar:na] 在 akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393) [akka-actor_2.10-2.3.4-spark.jar:na] 在 scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260) [scala-library-2.10.4.jar:na] 在 scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339) [scala-library-2.10.4.jar:na] 在 scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979) [scala-library-2.10.4.jar:na] 在 scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107) [scala-library-2.10.4.jar:na]

请为我提供此问题的解决方案。

【问题讨论】:

  • 能贴一下抛出这个异常的代码吗?
  • sparkContext.newAPIHadoopRDD(hbaseConf, TableInputFormat.class, ImmutableBytesWritable.class, Result.class)

标签: scala hadoop mapreduce hbase apache-spark


【解决方案1】:

异常是在 getPreferredLocations 阶段引发的,因此如果没有有关您的 hbase 配置的更多信息,我建议您查看 hbase.table.name 和 hbase.master(如果正确定义 HMaster,我不知道最后一个)是随意配置

【讨论】:

  • 我可以使用 spark 和不使用 spark 读取/写入 hbase 上的数据。
  • 使用 hbase 0.98.6、hadoop 2.5.0 和 spark 1.1.0 时没有问题
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-10-05
  • 1970-01-01
  • 1970-01-01
  • 2014-09-06
  • 2014-07-19
  • 2017-01-05
  • 1970-01-01
相关资源
最近更新 更多