读取节点

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

使用 labels 选项,连接器从 Neo4j 数据库读取具有给定标签的一组节点。

连接器构建一个使用 SKIPLIMITMATCH Cypher® 查询,以读取一批记录。

来自 示例 的代码读取 :Person 节点及其节点属性到 DataFrame 中。

示例
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()
等效的 Cypher 查询
MATCH (n:Person)
RETURN
  id(n) AS `<id>`,
  labels(n) AS `<labels>`,
  n.surname AS surname,
  n.name AS name,
  n.age AS age
...

根据并行度水平,查询可能会包含 SKIPLIMIT 子句。

表 1. 结果
<id> <labels> 姓氏 名称 (name) age

0

[Person]

Doe

Jane

40

39

[Person]

Doe

John

42

您可以使用冒号作为分隔符读取具有多个标签的节点。第一个标签前的冒号是可选的。

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

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

df.show()

DataFrame 列

生成的 DataFrame 包含与节点属性数量相等的列数,再加上两个额外的列

  • <id>: 内部 Neo4j ID

  • <labels>: 每个节点的标签列表

节点属性列的模式根据 模式推断 中的说明进行推断。