使用 Neo4j 连接器连接 Apache Spark

本教程展示了如何使用 Neo4j 连接器连接 Apache Spark 来写入和读取 Aura 实例中的数据。

设置

  1. 下载 Apache Spark

    示例:Spark 3.4.1,为 Apache Hadoop 3.3 及更高版本预构建,使用 Scala 2.12。

  2. 下载 Neo4j 连接器 JAR 文件,确保匹配 Spark 版本和 Scala 版本。

    示例:Neo4j 连接器 5.1.0,为 Spark 3.x 构建,使用 Scala 2.12。

  3. 解压缩 Spark 文件并启动 Spark shell,如以下示例所示

    $ spark-3.4.1-bin-hadoop3/bin/spark-shell --jars neo4j-connector-apache-spark_2.12-5.1.0_for_spark_3.jar

在 Apache Spark 中运行代码

您可以通过使用 :paste 命令激活 paste 模式,将 Scala 代码粘贴到 Spark shell 中。

创建一个 Spark 会话并设置 Aura 连接凭据

import org.apache.spark.sql.{SaveMode, SparkSession}

val spark = SparkSession.builder().getOrCreate()

// Replace with the actual connection URI and credentials
val url = "neo4j+s://xxxxxxxx.databases.neo4j.io"
val username = "neo4j"
val password = ""

然后,创建 Person 类和一个 Spark Dataset,其中包含一些示例数据

case class Person(name: String, surname: String, age: Int)

// Create example Dataset
val ds = Seq(
    Person("John", "Doe", 42),
    Person("Jane", "Doe", 40)
).toDS()

将数据写入 Aura

// Write to Neo4j
ds.write.format("org.neo4j.spark.DataSource")
    .mode(SaveMode.Overwrite)
    .option("url", url)
    .option("authentication.basic.username", username)
    .option("authentication.basic.password", password)
    .option("labels", ":Person")
    .option("node.keys", "name,surname")
    .save()

然后,您可以使用 Neo4j 浏览器查询和可视化数据。

您还可以从 Aura 读取数据

// Read from Neo4j
val data = spark.read.format("org.neo4j.spark.DataSource")
    .option("url", url)
    .option("authentication.basic.username", username)
    .option("authentication.basic.password", password)
    .option("labels", "Person")
    .load()

// Visualize the data as a table
data.show()

有关如何使用连接器的更多信息,请阅读 Neo4j Spark 连接器文档