You need to enable JavaScript to run this app. Neo4j Spark Connector v4.0.0 下从Neo4j获取Graphx图的实现方法
优惠活动
大模型
产品
解决方案
定价
更多

Neo4j Spark Connector v4.0.0 下从Neo4j获取Graphx图的实现方法

Neo4j Connector for Apache Spark v4.0.0 图实例获取方式

Neo4j Connector for Apache Spark v4.0.0 的核心定位是结构化DataFrame/数据集适配器,已完全移除旧版本中org.neo4j.spark.Neo4j类提供的直出Spark Graph、GraphFrames的内置API,不存在可以直接调用拿到Graph实例的入口,实际需要基于标准数据源接口读取的数据手动完成图对象构建,具体流程如下:

1. 基于标准DataSource接口读取构建图所需的两类基础数据

所有图对象的构建依赖两类结构化数据,均可通过通用读取接口拉取:

  • 读取节点DataFrame:编写Cypher查询,提取目标节点的唯一标识(一般用Neo4j内部节点ID或业务唯一键)、所有需要保留的属性,生成符合图结构要求的节点数据集,核心要求是包含唯一的id列。
    参考实现:
    val nodeDF = spark.read.format("org.neo4j.spark.DataSource")
      .option("url", "bolt://localhost:7687")
      .option("query", "MATCH (n:Person) RETURN id(n) as id, n.name as name, n.age as age")
      .load()
    
  • 读取关系DataFrame:编写Cypher查询,提取关系对应的起点节点ID、终点节点ID、关系类型及需要保留的关系属性,生成符合图结构要求的关系数据集,核心要求是包含src(起点ID)、dst(终点ID)两个强制列。
    参考实现:
    val relationDF = spark.read.format("org.neo4j.spark.DataSource")
      .option("url", "bolt://localhost:7687")
      .option("query", "MATCH (a:Person)-[r:KNOWS]->(b:Person) RETURN id(a) as src, id(b) as dst, type(r) as rel_type, r.since as since")
      .load()
    

2. 基于拉取的两类DataFrame手动构建目标Graph实例

根据实际使用的图框架,直接将上述DataFrame传入对应API完成构建即可,这部分逻辑是旧版连接器内部的封装逻辑,v4.0.0版本将其从连接器中剥离,需要用户自行实现:

  • 构建GraphFrames实例:直接引入GraphFrames依赖,将节点DataFrame、关系DataFrame作为参数传入构造方法即可生成可用的图实例,示例代码:
    val graph = GraphFrames(nodeDF, relationDF)
    
  • 构建GraphX实例:先将节点、关系DataFrame转换为符合GraphX要求的RDD格式,再调用GraphX的核心API封装生成Graph对象,整个过程无需额外依赖Neo4j连接器的特殊能力。

注意事项

  • v4.0.0版本已彻底移除org.neo4j.spark.Neo4j类,所有依赖该类的旧代码在当前版本下会触发类不存在的运行错误,不要尝试引用残留的旧类实现。
  • 旧版连接器的图直出能力,本质也是通过读取节点、关系两类结构化数据完成的封装,v4.0.0版本的结构化数据读取能力和旧版完全对齐,不存在数据兼容问题。

内容的提问来源于stack exchange,提问作者mcsoini

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.11.04 18:57:06