跳转至
开发版采用单机部署,无需产品 License 文件。需要多机部署或大规模性能测试? 了解企业版

从悦数图数据库开发版读数据

Spark 连接器支持从点、边或 GQL 查询结果中读取数据,并将其加载到 Spark DataFrame 中。本文演示了如何通过 Reader 参数和配置对象从悦数图数据库开发版读取数据。

读取点

以下示例从图movie中读取点类型为Movie的点,并将点属性加载到 Spark DataFrame 中。

通过 Reader 参数读取

将<current-password>替换为登录账号的当前密码。若已修改密码,请使用修改后的密码。

      val df = spark
       .read
       .format("com.vesoft.nebula.spark.connector.NebulaDataSource")
       .option("type", "node")
       .option("operate_type", "read")
       .option("graph_address", "127.0.0.1:9669")
       .option("label", "User")
       .option("user", "root")
       .option("passwd", "<current-password>")
       .option("graph_name", "movie")
       .option("batch_size", "10")
       .load()

通过配置对象读取

    val connectionConfig: NebulaConnectionConfig = NebulaConnectionConfig
      .builder()
      .withGraphAddress("127.0.0.1:9669")
      .withUser("root")
      .withPasswd("<current-password>")
      .build()

    val nebulaNodeReadConfig: ReadNebulaConfig = ReadNebulaConfig
      .builder()
      .withGraphName("movie")
      .withTypeName("Movie")
      .withReturnCols(List("id"))
      .withBatchSize(10)
      .withPartitionNum(1)
      .build()
    val df = spark.read.nebula(connectionConfig, nebulaNodeReadConfig).loadNode()

读取边

以下示例从图movie中读取边类型为Act的边,并将边属性加载到 Spark DataFrame 中。

通过 Reader 参数读取

      val df = spark.read
       .format("com.vesoft.nebula.spark.connector.NebulaDataSource")
       .option("type", "edge")
       .option("operate_type", "read")
       .option("graph_address", "127.0.0.1:9669")
       .option("user", "root")
       .option("passwd", "<current-password>")
       .option("graph_name", "movie")
       .option("label", "Watch")
       .option("batch_size", "10")
       .load()

通过配置对象读取

    val connectionConfig: NebulaConnectionConfig = NebulaConnectionConfig
      .builder()
      .withGraphAddress("127.0.0.1:9669")
      .withUser("root")
      .withPasswd("<current-password>")
      .build()
    val nebulaReadEdgeConfig: ReadNebulaConfig = ReadNebulaConfig
      .builder()
      .withGraphName("movie")
      .withTypeName("Act")
      .withReturnCols(null)
      .withBatchSize(1000)
      .withPartitionNum(1)
      .build()
    val df = spark.read.nebula(connectionConfig, nebulaReadEdgeConfig).loadEdge()

读取查询结果

以下示例从图movie中读取 GQL 查询结果,并将结果加载到 Spark DataFrame 中。

通过 Reader 参数读取

      val df = spark
       .read
       .format("com.vesoft.nebula.spark.connector.NebulaDataSource")
       .option("type", "gql")
       .option("operate_type", "read")
       .option("graph_address", "127.0.0.1:9669")
       .option("user", "root")
       .option("passwd", "<current-password>")
       .option("gql","use movie match(v:Movie) return v.id, v.name")
       .load()

通过配置对象读取

    val connectionConfig: NebulaConnectionConfig = NebulaConnectionConfig
      .builder()
      .withGraphAddress("127.0.0.1:9669")
      .withUser("root")
      .withPasswd("<current-password>")
      .build()
     val nebulaGqlConfig:GqlNebulaConfig = GqlNebulaConfig
      .builder()
      .withGql("USE movie MATCH(v:Movie) RETURN v.id, v.name")
      .build()
    val df = spark.read.gql(connectionConfig, nebulaGqlConfig).load()

更多信息