Pyspark使用nebula-spark-connector-3.3.0.jar失败

提问参考模版:

  • nebula 版本:3.3.0, spark版本3.2.2,python版本 3.7.6
  • 部署方式:分布式
  • 是否为线上版本: N

问题描述如下,求各位大佬帮忙提供一下解决思路:

执行命令 :

spark-submit \
--master yarn \
--deploy-mode client \
--jars file:///data1/hive/account/Sky/server/nebula-spark-connector-3.3.0.jar \
/data1/hive/account/Sky/graph_oppside_spark.py

代码内容:

from pyspark.sql import SparkSession

def nebula_search():
    """ nebula官网的demo"""
    spark = SparkSession.builder.config("nebula-spark-connector-3.3.0.jar","/data1/hive/account/Sky/server/nebula-spark-connector-3.3.0.jar").appName("nebula-connector").getOrCreate()
    # read vertex
    df = spark.read.format("com.vesoft.nebula.connector.NebulaDataSource").\
        option("type", "vertex").option("spaceName", "mpay_risk_graph_sit").option("label", "partner").\
        option("returnCols", "name").option("metaAddress", "xxxx:9559,yyyy:9559,zzzz:9559").option("partitionNumber", 1).load()
    df.show(n=2)

执行结果:

  File "/data1/hive/account/Sky/server/spark-3.2.0-bin-hadoop2.7/python/lib/py4j-0.10.9.2-src.zip/py4j/protocol.py", line 328, in get_return_value
py4j.protocol.Py4JJavaError: An error occurred while calling o49.load.
: java.lang.NoClassDefFoundError: org/apache/spark/sql/sources/v2/ReadSupport
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:763)
        at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
        at java.net.URLClassLoader.defineClass(URLClassLoader.java:468)
        at java.net.URLClassLoader.access$100(URLClassLoader.java:74)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:369)

路径要写对呀

类似 /data1/hive/account/Sky/server/nebula-spark-connector-3.3.0.jar

不好意思啊,我写问题时应该复制我的代码,结果复制成官方文档上的demo代码了。
我的路径是没问题的,我尝试了使用nebula-spark-connector-2.6.2.jar 来代替3.3.0的jar包,还是不行。

啊,我也没仔细看报错,建议等一下 3.x 的支持

https://github.com/vesoft-inc/nebula-spark-connector/pull/71

估计快了

cc @nicole

到时候可以先用 spark 直接测试可以跑再用 pyspark 继续

所以现在nebula-spark-connector,是只支持spark2.X吗?不持之spark3.X吗?

是的,文档应该有提及。

3.x 的支持工作在那个 PR 上

非常感谢,我用spark2.x吧。 :smile:

嗯嗯,推荐 2.4 哈

如果方便用容器,这里有一键 ready 的方式(nebulagraph + spark connector + spark 全家桶)

curl -fsSL nebula-up.siwei.io/all-in-one.sh | bash -s -- v3 spark

参考

1 个赞

是的,spark3.x的支持在路上。 那个pr可以自己打包去用的,但pr中的ci 有些问题还没处理。
@harry 你的spark环境是spark-3.2.0-bin-hadoop2.7, 要用这个pr 自己本地去package 才可以。
命令:

mvn -B package -pl nebula-spark-connector_3.0 -am -Pscala-2.12 -Pspark-3.0 -Dmaven.test.skip=true
1 个赞

我新部署了一个spark2.4版本的环境,坐等spark3.X支持发布

此话题已在最后回复的 7 天后被自动关闭。不再允许新回复。