从 Neo4j 读取数据

该连接器提供了三个数据源选项,用于从 Neo4j 数据库读取数据。

表 1. 读取选项
选项 描述 默认

labels

如果您只需要 读取节点及其属性,请使用此选项。

要读取的节点标签的冒号分隔列表。

(空)

relationship

如果您需要 读取关系及其源节点和目标节点以及属性,请使用此选项。

要读取的关系类型。

(空)

query

如果您需要更多灵活性并且知道如何 编写 Cypher® 查询,请使用此选项。

包含 MATCH 子句的 Cypher 查询。

(空)

示例

本页中的所有示例都假设 SparkSession 已使用适当的身份验证选项初始化。有关更多详细信息,请参阅 快速入门示例

您可以运行每个选项的 写入示例,以便获得一些要读取的示例数据。

labels 选项

读取 :Person 节点。

示例
val df = spark.read
    .format("org.neo4j.spark.DataSource")
    .option("labels", ":Person")
    .load()

df.show()
示例
df = (
    spark.read.format("org.neo4j.spark.DataSource")
    .option("labels", ":Person")
    .load()
)

df.show()

有关更多信息和示例,请参阅 读取节点

relationship 选项

读取 :BOUGHT 关系及其源节点和目标节点以及属性。

示例
val df = spark.read
    .format("org.neo4j.spark.DataSource")
    .option("relationship", "BOUGHT")
    .option("relationship.source.labels", ":Customer")
    .option("relationship.target.labels", ":Product")
    .load()

df.show()
示例
df = (
    spark.read.format("org.neo4j.spark.DataSource")
    .option("relationship", "BOUGHT")
    .option("relationship.source.labels", ":Customer")
    .option("relationship.target.labels", ":Product")
    .load()
)

df.show()

有关更多信息和示例,请参阅 读取关系

query 选项

使用 Cypher 查询读取数据。

示例
val readQuery = """
  MATCH (n:Person)
  RETURN id(n) AS id, n.fullName AS name
"""

val df = spark.read
    .format("org.neo4j.spark.DataSource")
    .option("query", readQuery)
    .load()

df.show()
示例
read_query = """
    MATCH (n:Person)
    RETURN id(n) AS id, n.fullName AS name
"""

df = (
    spark.read.format("org.neo4j.spark.DataSource")
    .option("query", read_query)
    .load()
)

df.show()

有关更多信息和示例,请参阅 使用 Cypher 查询读取数据

类型映射

有关 Spark DataFrames 和 Neo4j 之间的完整类型映射,请参阅 数据类型映射

性能注意事项

如果未指定模式,Spark 连接器将使用 采样。由于采样可能是一项昂贵的操作,因此请考虑 定义模式