使用Neo4j Spark Connector构建Spark应用时导入报错求助
解决Neo4j Spark Connector导入
org.neo4j.spark.Neo4j报错问题 错误原因
你用的是Neo4j Spark Connector 4.x版本(4.1.4_for_spark_2.4),但代码里写的是旧版Connector(2.x及更早)的API——org.neo4j.spark.Neo4j这个类在4.x版本里已经被移除,API结构完全重构,所以才会报“object Neo4j is not a member of package org.neo4j.spark”的错误。另外你代码里还有个低级问题:main方法嵌套定义了,这也会导致代码无法正常运行。
解决方案
有两种处理方式,选一个适合你的:
方案1:适配4.x版本的新API(推荐)
保留当前build.sbt里的依赖,修改代码使用4.x版本的API即可。4.x版本主要通过Spark DataFrame/SQL API来操作Neo4j,示例代码如下:
import org.apache.spark.sql.SparkSession object FirstApp { def main(args: Array[String]): Unit = { val spark = SparkSession.builder() .appName("Test-neo4j-skel") .master("local[*]") // 填写你的Neo4j连接信息 .config("neo4j.url", "bolt://localhost:7687") .config("neo4j.authentication.basic.username", "neo4j") .config("neo4j.authentication.basic.password", "你的密码") .getOrCreate() // 用Cypher查询加载数据为DataFrame val df = spark.read .format("org.neo4j.spark.DataSource") .option("query", "MATCH (n:Person) RETURN id(n) as id") .load() // 执行数据操作,比如计数、打印结果 println(df.count()) df.show() spark.stop() } }
方案2:换回旧版Connector使用原API
如果你不想修改代码逻辑,想继续用org.neo4j.spark.Neo4j这个类,就把Connector版本换回2.x系列,修改build.sbt的依赖:
// 启用旧版Connector依赖 libraryDependencies += "neo4j-contrib" %% "neo4j-spark-connector" % "2.1.0-M4" // 注释掉4.x版本的依赖 // libraryDependencies += "org.neo4j" % "neo4j-connector-apache-spark_2.12" % "4.1.4_for_spark_2.4"
同时修正代码里嵌套的main方法:
import org.apache.spark.{SparkConf, SparkContext} import org.neo4j.spark.Neo4j object FirstApp { def main(args: Array[String]): Unit = { val conf = new SparkConf() .setAppName("Test-neo4j-skel") .setMaster("local[*]") // 配置Neo4j连接信息 .set("neo4j.url", "bolt://localhost:7687") .set("neo4j.user", "neo4j") .set("neo4j.password", "你的密码") val sc = new SparkContext(conf) val neo = Neo4j(sc) val rdd = neo.cypher("MATCH (n:Person) RETURN id(n) as id ").loadRowRdd println(rdd.count()) sc.stop() } }
注意事项
- 确保Neo4j服务处于运行状态,连接的地址、用户名、密码要与实际配置一致。
- Spark 2.4搭配Scala 2.12时,依赖后缀为
_2.12;如果你的项目使用Scala 2.11,需要更换对应后缀的Connector版本。
内容的提问来源于stack exchange,提问作者dfouheqoijefoih
相关产品推荐
相关产品推荐

