如何使用nebula-spark-connector

  • nebula 版本:2.5.0
  • spark 版本:2.4.5
  • 部署方式:分布式
  • 是否为线上版本:N

——————————

目前nebula和spark环境都搭好了,之前试过exchange工具导数据也没有问题。

请问如何在客户端启动spark-shell读取nebula里的数据呢?

——————————

我的启动方式:

spark-shell --conf spark.driver.extraJavaOptions='-XX:+UseG1GC -Droot.spark.logger=ERROR,rolling' --master yarn --conf spark.ui.showConsoleProgress=true  --jars /usr/local/nebula-spark-utils/nebula-spark-connector/target/nebula-spark-connector-2.5-SNAPSHOT.jar

启动后,在scala窗口输入代码:

spark.read.nebula("10.30.10.10:9669", "tb_device", "15")

会报错:

初学spark,可能是哪里我没有理解,希望看到的大佬帮忙指指路!

Nebula版本号在帖子最上面有写。我理解主要是不会启动spark-shell来读取nebula里的数据,与mata 和 graph 的配置没有关系

目前的启动方式:

spark-shell \
--master yarn \
--name nebulaconnect \
--conf spark.ui.showConsoleProgress=true \
--conf spark.driver.extraClassPath=nebula-spark-connector-2.5-SNAPSHOT.jar \
--conf spark.executor.extraClassPath=nebula-spark-connector-2.5-SNAPSHOT.jar \
--conf spark.dynamicAllocation.enabled=false \
--jars nebula-spark-connector-2.5-SNAPSHOT.jar \
--class com.vesoft.nebula.connector.importor.NebulaImport  \
   original-nebula-spark-connector-2.5-SNAPSHOT.jar

运行后日志:

Start ScribeAppender thread.
21/10/13 14:52:16 WARN SparkConf: The configuration key ‘spark.scheduler.executorTaskBlacklistTime’ has been deprecated as of Spark 2.1.0 and may be removed in the future. Please use the new blacklisting options, spark.blacklist.*
21/10/13 14:52:17 WARN DependencyUtils: Local jar /usr/local/nebula-spark-utils/nebula-spark-connector/nebula-spark-connector-2.5-SNAPSHOT.jar does not exist, skipping.
21/10/13 14:52:17 WARN SparkSubmit$$anon$2: Failed to load com.vesoft.nebula.connector.importor.NebulaImport.
java.lang.ClassNotFoundException: com.vesoft.nebula.connector.importor.NebulaImport
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:348)
at org.apache.spark.util.Utils$.classForName(Utils.scala:238)
at org.apache.spark.deploy.SparkSubmit.org$apache$spark$deploy$SparkSubmit$$runMain(SparkSubmit.scala:806)
at org.apache.spark.deploy.SparkSubmit.doRunMain$1(SparkSubmit.scala:161)
at org.apache.spark.deploy.SparkSubmit.submit(SparkSubmit.scala:184)
at org.apache.spark.deploy.SparkSubmit.doSubmit(SparkSubmit.scala:86)
at org.apache.spark.deploy.SparkSubmit$$anon$2.doSubmit(SparkSubmit.scala:920)
at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:929)
at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)
21/10/13 14:52:17 INFO ShutdownHookManager: Shutdown hook called
21/10/13 14:52:17 INFO ShutdownHookManager: Deleting directory /tmp/spark-eb11d5e5-66e9-413d-a57f-1dd9931b4153

看下readme 或者文档, 有spark-connector的使用说明, 它和exchange的使用是不一样的,你可以把nebula-spark-connector当成一个driver来使用。

文档有认真看过,写得不详细……关键的步骤,看了还是不清楚

(1) 对于官方文档:Nebula Spark Connector - NebulaGraph Database 手册

(2) 对于readme,https://github.com/vesoft-inc/nebula-spark-utils/blob/v2.5/nebula-spark-connector/README_CN.md,也没有找到关键的点

你是怎么基于nebula java client写应用程序的呢

  1. 这些代码在哪里编写? 在你自己的应用程序里编写。
  2. 你使用外部的一个driver驱动,如果你自己的工程是maven管理的,那就在你的pom.xml中增加nebula-spark-connector依赖,然后就可以调用这里面的类和方法了。
        <dependency>
            <groupId>com.vesoft</groupId>
            <artifactId>nebula-spark-connector</artifactId>
            <version>2.5-SNAPSHOT</version>
        </dependency>

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