spark.read.nebula是哪个版本的api

问题描述:
我在使用nebula-spark-connector进行数据加载,进行图计算,对api的使用有一些小问题
版本:2.0.1
开发语言版本:jdk-1.8
在官网上看到有两种写法
写法一:
val vertex = spark.read.nebula(config, nebulaReadVertexConfig).loadVerticesToGraphx()
val edgeRDD = spark.read.nebula(config, nebulaReadEdgeConfig).loadEdgesToGraphx()
val graph = Graph(vertexRDD, edgeRDD)
问题描述:这个spark.read.nebula,这里的read是sparksql的api,但是read的后面并没有nebula的选项,请问这个写法是如何写出来的?
相关链接:nebula-spark-utils/README_CN.md at v2.0.0 · vesoft-inc/nebula-spark-utils · GitHub
截图如下:

写法二:
var anotherDataset = spark.read
.format(“nebula”)
.option(Parameters.TYPE, Type.EDGE.getType)
.option(Parameters.HOST_AND_PORTS, hostPorts)
.option(Parameters.PARTITION_NUMBER, partitionNumber)
.option(Parameters.SPACE_NAME, nameSpace)
.option(Parameters.LABEL, edge)
.option(Parameters.RETURN_COLS, labelAndWeight(edge))
.load()
这种写法如何使用loadVerticesToGraphx()和loadEdgesToGraphx()这个api
相关链接:nebula-java/NebulaUtil.scala at v1.0 · vesoft-inc/nebula-java · GitHub

read.nebula就是nebula-spark-connector实现的啊, 如果都用spark原生api,那你用spark是读不了nebula数据的。如果你想了解这个写法如何实现的,可以看下我们的源码或者相关文章 什么是 Nebula Spark Connector Reader - 开源分布式图数据库 Nebula Graph

这个是1.x的实现,读取的是Dataframe, 是需要自己构造成VertexRDD和EdgeRDD的

多谢您的解答。
再向您请教一个问题:
如果我需要在代码中使用这个写法spark.read.nebula,请问这里的spark要Import哪个package。
目前我引用的是SparkSession,sparkSession中的read后面是无法找到nebula这个api。

找到问题所在了
connector包是使用scala进行编写,我使用java调用scala,用直接补全的方式无法找到对应的api,如下图所示:

如果工程是scala工程,则可以找到对应的api,如下图所示:


不过在idea中显示为红色(找不到对应的api),导致后续loadVerticesToGraphx无法补全。

下图为java调用scala的隐式类的方式:

你是没加引用吧

嗯嗯,是的。我是在java里调用scala,所以用java普通的方式引入包,没引入成功。

该话题在最后一个回复创建后30天后自动关闭。不再允许新的回复。

浙ICP备20010487号