-
nebula 版本:Nebula v1.1
-
部署方式(分布式 / 单机 / Docker / DBaaS):Docker
-
硬件信息
- 磁盘( 必须为 SSD ,不支持 HDD):SSD
-
问题的具体描述
使用Spark连接metad来读取存在Docker数据库里面的数据,代码如下,
前面执行都正常,df.show()也能够看到数据,在执行df.count()时遇到报错:NullPointerException
//代码段
private def nebula: NebulaDataFrameReader = {
spark.read.nebula(
dbConfig.get("spark.graphdb.metad_address"),
dbConfig.get("spark.graphdb.space"),
graphDBClient.descSpace(dbConfig.get("spark.graphdb.space")).partitionNumber.toString
)
}
val df = nebula.loadEdgesToDF(name, property)
print(df.count())
完整报错内容:
Caused by: java.lang.NullPointerException
at com.vesoft.nebula.client.storage.StorageClientImpl.close(StorageClientImpl.java:971)
at com.vesoft.nebula.tools.connector.reader.NebulaEdgeIterator.hasNext(NebulaEdgeIterator.scala:72)
at org.apache.spark.sql.catalyst.expressions.GeneratedClass$GeneratedIteratorForCodegenStage1.agg_doAggregateWithoutKey_0$(Unknown Source)
at org.apache.spark.sql.catalyst.expressions.GeneratedClass$GeneratedIteratorForCodegenStage1.processNext(Unknown Source)
at org.apache.spark.sql.execution.BufferedRowIterator.hasNext(BufferedRowIterator.java:43)
at org.apache.spark.sql.execution.WholeStageCodegenExec$$anonfun$13$$anon$1.hasNext(WholeStageCodegenExec.scala:636)
at scala.collection.Iterator$$anon$11.hasNext(Iterator.scala:409)
at org.apache.spark.shuffle.sort.BypassMergeSortShuffleWriter.write(BypassMergeSortShuffleWriter.java:127)
at org.apache.spark.scheduler.ShuffleMapTask.runTask(ShuffleMapTask.scala:99)
at org.apache.spark.scheduler.ShuffleMapTask.runTask(ShuffleMapTask.scala:55)
at org.apache.spark.scheduler.Task.run(Task.scala:123)
at org.apache.spark.executor.Executor$TaskRunner$$anonfun$10.apply(Executor.scala:408)
at org.apache.spark.util.Utils$.tryWithSafeFinally(Utils.scala:1374)
at org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:414)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)