读取节点

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

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

连接器构建一个使用 SKIPLIMIT 读取一批行的 MATCH 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> surname 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>:每个节点的标签列表

节点属性列的模式将根据模式推断中所述进行推断。