SuperAPI AI 工具集

neo4j-spark-skill

数据与分析

查看项目

更新于 10-15 19:49

技能介绍

用途:该技能面向使用 Neo4j Connector for Apache Spark 在 Apache Spark 或 Databricks 中读写 Neo4j 的场景,包括把 Neo4j 节点/关系读入 Spark DataFrame、把 DataFrame 写为节点或关系、Databricks 笔记本连接 Neo4j、Delta Lake 到 Neo4j 的入图管道,以及大图的分区并行读取。用 Python bolt 驱动、Cypher 编写、GDS 算法或 Spring Data 场景应改用其他对应技能。

版本与安装:6.0.x 依赖 Spark 4.0/4.1、Scala 2.13、Java 17+,Maven 坐标 org.neo4j.connectors:spark:6.0.0-s_2.13;5.5.x/5.4.x 适用于 Spark 3.4/3.5,坐标为 org.neo4j:neo4j-connector-apache-spark_2.13:5.5.0_for_spark_3。Spark 3.x 应留在 5.5.x。可在 SparkSession 中通过 spark.jars.packages 加载并配置 neo4j.url 与认证;Databricks 可在集群库安装 Maven 包并添加 Spark 配置,凭据优先使用 Databricks Secrets,且需 Single User 访问模式。

读取:三种互斥模式任选其一——标签扫描(labels)、Cypher 查询(query,需显式 RETURN 别名,查询中不得含 SKIP/LIMIT)、关系扫描(relationship)。可设置 partitions、batch.size、schema.flatten.limit 等。

写入:SaveMode 中 Append 用 CREATE,Overwrite 用 MERGE 且必须提供 node.keys 并预先建立唯一约束。写关系建议 coalesce(1) 以避免死锁,可用 relationship.save.strategy、source/target 的 labels、save.mode、node.keys 与 properties 映射。6.0 起默认策略由 native 改为 keys,行为变化需显式设置。6.0 还移除了 schema.optimization.type、$stream.offset 和分号分隔多语句脚本,改用 script.1、script.2 等。

限制与排错:关系写入易因多分区锁冲突而死锁;Overwrite 未建唯一约束会产生重复节点;batch.size 过大可能导致 Neo4j 侧 OOM;Spark 4 上使用 5.x 连接器会报 NoSuchMethodError;Databricks 共享集群不受支持。需注意 connector 坐标与 Spark 版本匹配、Scala 版本一致、凭据不入硬编码,并先写节点再写关系。