Spark Writer

    • HDFS,包括 Parquet、JSON、ORC 和 CSV 格式的文件
    • HIVE

    Spark Writer 支持并发导入多个 tag、edge,支持不同 tag/edge 配置不同的数据仓库。

    注意: 为确保 Nebula Graph Spark Writer 正常使用,请确保你的机器已安装:

    • Spark 2.0 及以上版本
    • Hive 2.3 及以上版本
    • Hadoop 2.0 及以上版本

    或者直接下载

    从云存储 OSS 下载

    基本流程分为以下几步:

    1. 编写数据文件
    2. 编写输入源映射文件
    3. 导入数据

    构图请参考中的示例构图。

    注意:请先在 Nebula Graph 中完成构图(创建图空间和定义图数据 Schema),再通过本工具向 Nebula Graph 中写入数据。

    数据示例

    顶点数据文件由一行一行的数据组成,文件中每一行表示一个点和它的属性。一般来说,第一列为点的 ID ——此列的名称将在后文的映射文件中指定,其他列为点的属性。

    • player 顶点数据
    1. {"id":100,"name":"Tim Duncan","age":42}
    2. {"id":101,"name":"Tony Parker","age":36}
    3. {"id":102,"name":"LaMarcus Aldridge","age":33}

    边数据文件由一行一行的数据组成,文件中每一行表示一条边和它的属性。一般来说,第一列为起点 ID,第二列为终点 ID,起点 ID 列及终点 ID 列会在映射文件中指定。其他列为边属性。下面以 JSON 格式为例进行说明。

    • 无 rank 的边
    • 有 rank 的边
    1. {"source":100,"target":101,"likeness":95,"ranking":2}
    2. {"source":101,"target":100,"likeness":95,"ranking":1}
    3. {"source":101,"target":102,"likeness":90,"ranking":3}

    含有地理位置 Geo 的数据

    Spark Writer 支持 Geo 数据导入,Geo 数据用 latitudelongitude 字段描述经纬度,数据类型为 double。

    1. {"latitude":30.2822095,"longitude":120.0298785,"target":0,"dp_poi_name":"0"}
    2. {"latitude":30.2813834,"longitude":120.0208692,"target":1,"dp_poi_name":"1"}
    3. {"latitude":30.2807347,"longitude":120.0181162,"target":2,"dp_poi_name":"2"}
    4. {"latitude":30.2812694,"longitude":120.0164896,"target":3,"dp_poi_name":"3"}

    数据源文件

    目前 Spark Writer 支持的数据源有:

    • HDFS
    • HIVE
    HDFS 文件

    支持的文件格式包括:

    • Parquet
    • JSON
    • CSV
    • ORC

    Player 的 Parquet 示例如下:

    JSON 示例如下:

    1. {"id":100,"name":"Tim Duncan","age":42}
    2. {"id":101,"name":"Tony Parker","age":36}

    CSV 示例如下:

    1. age,id,name
    2. 36,101,Tony Parker
    数据库

    Spark Writer 支持以数据库作为数据源,目前支持 HIVE。

    Player 表结构如下:

    输入源的映射文件示例:

    Spark 配置信息

    下表给出了一些示例,所有可配置项请见 Spark Available Properties

    Nebula Graph 配置信息

    tags 和 edges 映射信息

    tag 和 edge 映射的选项比较类似。下面先介绍相同的选项,再分别介绍 tag 映射edge 映射的特有选项。

    • tag 映射的特有选项

      • vertex 指定某一列作为点的 ID 列,必填
    • edge 映射的特有选项

      • source 指定输入源某一列作为源点的 ID 列,必填
      • target 指定某一列作为目标点的 ID 列,必填
      • 当插入边有 ranking 值, ranking 指定某一列作为边 ranking 列,选填

    数据源映射

    • HDFS Parquet 文件
      • type 指定输入源类型,当为 parquet 时大小写不敏感,必填
      • 指定 HDFS 文件或目录的路径,必须是 HDFS 的绝对路径,必填
    • HDFS JSON 文件
      • type 指定输入源类型,当为 JSON 时大小写不敏感,必填
      • path 指定 HDFS 文件或目录的路径,必须是 HDFS 的绝对路径,必填
    • HIVE ORC 文件
      • type 指定输入源类型,当为 ORC时大小写不敏感,必填
      • path 指定 HDFS 文件或目录的路径,必须是 HDFS 的绝对路径,必填
    • HIVE CSV 文件
      • type 指定输入源类型,当为 CSV 时大小写不敏感,必填
      • path 指定 HDFS 文件或目录的路径,必须是 HDFS 的绝对路径,必填
    • HIVE
      • type 指定输入源类型,当为 HIVE 时大小写不敏感,必填
      • exec 指定 HIVE 执行查询的语句,必填

    执行命令导入数据

    导入数据命令:

    1. bin/spark-submit \
    2. --class com.vesoft.nebula.tools.generator.v2.SparkClientGenerator \
    3. ${SPARK_WRITER_JAR_PACKAGE} -c conf/test.conf -h -d

    参数说明: