Apache spark 对连接的组件使用图形框架时出现奇怪的JavaNullPointerException

Apache spark 对连接的组件使用图形框架时出现奇怪的JavaNullPointerException,apache-spark,pyspark,graphframes,Apache Spark,Pyspark,Graphframes,我目前正在使用GraphFrame从图形中检索连接的组件 我的代码非常简单,如下所示: v = sqlContext.createDataFrame(node,["id","name"]) print v.take(15) e = sqlContext.createDataFrame(edge,["src","dst"]) print e.take(15) g = GraphFrame(v,e) # NullPointerException comes from connectedCompone

我目前正在使用GraphFrame从图形中检索连接的组件

我的代码非常简单,如下所示:

v = sqlContext.createDataFrame(node,["id","name"])
print v.take(15)
e = sqlContext.createDataFrame(edge,["src","dst"])
print e.take(15)
g = GraphFrame(v,e)
# NullPointerException comes from connectedComponents function
res = g.connectedComponents()
下面是代码片段的输出,我觉得也不错

打印顶点:
[行(id=6,name=u'6')、行(id=12,name=u'12')、行(id=1,name=u'1')、行(id=3,name=u'3')、行(id=9,name=u'9')、行(id=2,name=u'2')、行(id=11,name=u'11')、行(id=10,name=u'10')、行(id=5,name=u'5')、行(id=4,name=u'4')]

打印边缘:
[行(src=2,dst=9),行(src=2,dst=5),行(src=2,dst=6),行(src=9,dst=10),行(src=11,dst=12),行(src=4,dst=10),行(src=1,dst=2),行(src=1,dst=3),行(src=1,dst=12)]

但是,当执行g.connectedComponents()时,程序开始给出以下NullPointerException

如果您对这里的问题有任何建议,我们将不胜感激

LiveListenerBus错误:侦听器JobProgressListener引发异常 位于的java.lang.NullPointerException org.apache.spark.ui.jobs.JobProgressListener$$anonfun$onTaskEnd$1.apply(JobProgressListener.scala:361) 在 org.apache.spark.ui.jobs.JobProgressListener$$anonfun$onTaskEnd$1.apply(JobProgressListener.scala:360) 位于scala.collection.immutable.List.foreach(List.scala:318) scala.collection.generic.TraversableForwarder$class.foreach(TraversableForwarder.scala:32) 位于scala.collection.mutable.ListBuffer.foreach(ListBuffer.scala:45) 在 org.apache.spark.ui.jobs.JobProgressListener.onTaskEnd(JobProgressListener.scala:360) 在 org.apache.spark.scheduler.sparksistenerbus$class.onPostEvent(sparksistenerbus.scala:42) 在 org.apache.spark.scheduler.LiveListenerBus.onPostEvent(LiveListenerBus.scala:31) 在 org.apache.spark.scheduler.LiveListenerBus.onPostEvent(LiveListenerBus.scala:31) 在 org.apache.spark.util.ListenerBus$class.postToAll(ListenerBus.scala:55) 在 org.apache.spark.util.AsynchronousListenerBus.postToAll(AsynchronousListenerBus.scala:37) 在 org.apache.spark.util.AsynchronousListenerBus$$anon$1$$anonfun$run$1$$anonfun$apply$mcV$sp$1.apply$mcV$sp(AsynchronousListenerBus.scala:80) 在 org.apache.spark.util.AsynchronousListenerBus$$anon$1$$anonfun$run$1$$anonfun$apply$mcV$sp$1.apply(AsynchronousListenerBus.scala:65) 在 org.apache.spark.util.AsynchronousListenerBus$$anon$1$$anonfun$run$1$$anonfun$apply$mcV$sp$1.apply(AsynchronousListenerBus.scala:65) 在scala.util.DynamicVariable.withValue(DynamicVariable.scala:57)处 org.apache.spark.util.AsynchronousListenerBus$$anon$1$$anonfun$run$1.apply$mcV$sp(AsynchronousListenerBus.scala:64) 在 org.apache.spark.util.Utils$.tryOrStopSparkContext(Utils.scala:1183) 在 org.apache.spark.util.AsynchronousListenerBus$$anon$1.run(AsynchronousListenerBus.scala:63)


我不熟悉这个特定的错误,但要确定:您是否设置了checkPointDir
spark.sparkContext.setCheckpointDir
checkPointDir未设置,这似乎是RDD.checkpoint工作所必需的。你是说g。connectedComponents()涉及某种检查点调用?我对spark和graphFrames很陌生,请您进一步解释一下为什么需要它?非常感谢。我猜原因是图中的连接组件是NP难问题,如果没有检查点,RDD依赖关系将变得很深,或者需要进行大量的重新调整,可能会导致OOM。在文档中也提到了它谢谢你的解释!我在代码中添加了sc.setCheckpointDir(“checkpoints”),但仍然无法消除异常:(…我注意到在我的“checkpoints”中创建了一个新文件夹)作业启动时目录,但文件夹始终为空。我如何才能知道检查点是否工作?我猜代码甚至没有做到这一点。可能它与检查点无关。我的下一个猜测可能与基于错误的webui有关。可能禁用它会有帮助?
.config(“spark.ui.enabled”,“false”)