使用Spark读取图数据库数据报错

  • nebula 版本:基于V1.1.0版。
  • 部署方式(分布式 / 单机 / Docker / DBaaS):Docker
  • 硬件信息
    • 磁盘:SSD
    • CPU、内存信息:32G / pod * 16
  • 问题的具体描述:
    使用com.vesoft.nebula-spark包,读取图数据库已经导入的数据,报错提示:
User class threw exception: java.lang.ClassCastException: com.vesoft.nebula.shaded.google.common.net.HostAndPort cannot be cast to com.google.common.net.HostAndPort
	at com.vesoft.nebula.AbstractClient.<init>(AbstractClient.java:45)
	at com.vesoft.nebula.client.meta.MetaClientImpl.<init>(MetaClientImpl.java:72)
	at com.vesoft.nebula.client.meta.MetaClientImpl.<init>(MetaClientImpl.java:67)
	at com.vesoft.nebula.tools.connector.NebulaUtils$.createMetaClient(NebulaUtils.scala:82)
	at com.vesoft.nebula.tools.connector.reader.NebulaRelation.getSchema(NebulaRelation.scala:46)
	at com.vesoft.nebula.tools.connector.reader.NebulaRelation.schema(NebulaRelation.scala:31)
	at org.apache.spark.sql.execution.datasources.DataSource.resolveRelation(DataSource.scala:403)
	at org.apache.spark.sql.DataFrameReader.loadV1Source(DataFrameReader.scala:223)
	at org.apache.spark.sql.DataFrameReader.load(DataFrameReader.scala:208)
	at org.apache.spark.sql.DataFrameReader.load(DataFrameReader.scala:167)

报错似乎是在调用:
spark.read.nebula("xxx.xxx.xxx.xxx:22343", "space", "partition_num").loadEdgesToDF的时候出现的异常,这里的第一个参数我明明传入的是字符串,怎么就变成HostAndPort了呢,还出现了类型不匹配的报错。。。

不要使用远程仓库的java-client包,打包nebula-spark时请直接在nebula-java目录下执行
maven clean package -Dgpg.skip -Dmaven.javadoc.skip=true -Dmaven.test.skip=true

只能这样么,能不能将远程仓库的java-client包更新一下呢?
能不能出个大概的教程???nebula-java下打包生成jar文件,然后还要再打包nebula-spark么?nebula-spark在哪呢。。。

嗯 后面发版本的时候会更新一下的哈。
具体打包操作:

cd nebula-java
maven clean package -Dgpg.skip -Dmaven.javadoc.skip=true -Dmaven.test.skip=true

然后就可以再nebula-java/tools/nebula-spark/target下看到nebula-spark的jar包了。

1 个赞

拉取V1.0分支
遇到报错:error: Symbol ‘term com.fasterxml.jackson.annotation’ is missing from the classpath

v1.0分支无法克隆和拉取么,试了下可以clone 也可以checkout啊
你用的scala版本是多少

拉取是可以的,我是直接拉取的V1.0分支。。
是在执行maven clean package -Dgpg.skip -Dmaven.javadoc.skip=true -Dmaven.test.skip=true的时候弹出以上报错。
Scala的版本是2.11.12.
详细报错截图:

这个看下IDE中配置的scala sdk的版本呢,我试了下v1.0的代码可以package的,应该是IDE配置的问题。
你可以试下在非IDE中直接用maven编。

PS:如果你是要用nebula-spark的话,它已经package成功了,你可以直接去用了。

浙ICP备20010487号