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

数据导入配置

本文介绍悦数数据迁移导入功能的配置文件。

配置文件结构

悦数数据迁移配置文件的结构如下:

{

    taskType: <task_type>

    nebula: {}  

    error: {}

    checkPoint: {}

    sourcesCommon: {}

    writeCommon: {}

    sources: []
}

对于不同的数据源,悦数数据迁移配置文件的结构都是相同的,区别主要在sourcesCommon和sources部分。在悦数数据迁移包的目录yueshu-graph-exchange/template/中,提供了针对各个数据源的配置文件模板。

如上所示,配置文件包含以下部分:

  • taskType:指定任务类型。更多信息,请参见任务类型配置。
  • nebula:指定悦数图数据库开发版的连接配置。更多信息,请参见悦数图数据库开发版配置。
  • error:指定导入过程中如何处理脏记录和失败记录。更多信息,请参见错误配置。
  • checkPoint:指定断点续传相关的配置。更多信息,请参见 Checkpoint 文件配置。
  • sourcesCommon:指定数据源的通用配置。更多信息,请参见通用源配置。
  • writeCommon:指定写操作的通用配置。更多信息,请参见通用写配置。
  • sources:指定数据源的连接信息和特定配置、如何预处理源数据以及如何将源数据映射到悦数图数据库开发版的图元素。更多信息,请参见源配置。

任务类型配置

选项 描述 类型 是否必选 默认值
taskType 任务类型。有效值:
  • import:导入数据。
  • check:检查配置文件的有效性,但不导入数据。检查结果记录在yueshu-graph-exchange/目录或者通过-log指定的目录下的logs/import.log日志文件中。
  • gqlTemplate:通过自定义 GQL 模板将数据导入悦数图数据库开发版。更多信息,请参见基于 GQL 模板导入。
  • dryRun:执行预演(dry run),即悦数数据迁移执行导入过程的预演,包括读取源数据,统计要导入的记录数,但不会把数据导入悦数图数据库开发版。
  • reload:重新加载执行失败的 GQL 语句。每次数据导入任务完成后,都会返回一个唯一的名为app id的 ID。可以指定app id来重新加载在上一次运行中执行失败的 GQL 语句。此外,可以前往error.path路径中查看失败的记录。
  • gql:根据最多 200 条源数据生成含有 GQL 语句的文件。GQL 语句基于通用写配置生成,存储至/tmp/gql/文件夹中,其中一条语句代表一个写请求。
若数据导入的命令中指定了选项-check、-dry或-reload且与此处指定的任务类型冲突,以导入命令中指定的选项为准。例如,导入命令中指定了选项-dry,但是设置本配置项为check,则系统执行预演操作。
String 是 import

悦数图数据库开发版配置

本章节介绍如何在悦数数据迁移中配置悦数图数据库开发版。

配置示例

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

  nebula: {
    graphAddr: "127.0.0.1:9669"
    graphName: "movie"
    user: "root"
    enableEncryptPasswd: false
    passwd: "<current-password>"
    schema: "/default_schema"
    timezone: "Asia/Shanghai"
    dateFormat: "%Y-%m-%d"
    localDatetimeFormat: "%Y-%m-%dT%H:%M:%S"
    zonedDatetimeFormat: "%Y-%m-%dT%H:%M:%S %z"
    localTimeFormat: "%H:%M:%S"
    zonedTimeFormat: "%H:%M:%S %z"
    connectTimeoutMs: 6000
    requestTimeoutMs: 6000
    enableDataCheck: false
    retryTimes: 3
    retryIntervalMs: 0    
    tls: {
        enableTls: false
        disableVerifyServerCert: false
        ca: "/tmp/ca.pem"
        cert: "/tmp/cert.crt"
        key: "/tmp/key"
    }    
    preHooks:[
        """ CREATE GRAPH TYPE IF NOT EXISTS movie_type AS {
                NODE Actor (LABEL Person {id INT64, name STRING, birthDate DATE, PRIMARY KEY (id)}),
                NODE Director (LABEL Person {id INT64, name STRING, birthDate DATE, PRIMARY KEY (id)}),
                NODE `User` (LABEL Person {id INT64 PRIMARY KEY}),
                NODE Movie (LABEL Movie {id INT64 PRIMARY KEY, name STRING}),
                NODE Genre (LABEL Genre {id INT64 PRIMARY KEY, name STRING}),
                EDGE Act (Actor)-[:Act]->(Movie),
                EDGE Direct (Director)-[:Direct]->(Movie),
                EDGE Watch (`User`)-[:Watch {rate FLOAT}]->(Movie),
                EDGE WithGenre (Movie)-[:WithGenre]->(Genre)
        }""",
        "CREATE GRAPH IF NOT EXISTS movie TYPED movie_type"
        ]
  }

配置项

选项 描述 类型 是否必选 默认值
graphAddr Graph 服务的 IP 和端口。多个地址之间用英文逗号分隔。 String 是 无
graphName 待写入数据的图的名称。 String 是 无
user Graph 服务的用户名。 String 否 "root"
enableEncryptPasswd 是否使用加密密码。更多信息,请参见加密密码。 Boolean 否 无
passwd 登录账号的当前密码。若enableEncryptPasswd为true,使用该密码的加密值,见加密密码。 String 是 无
schema 待写入数据的 Schema。 String 否 null,代表逻辑路径/default_schema中的默认 Schema。
timezone 在 Graph 服务的会话中设置的时区。 String 否 null,代表运行 Graph 服务的服务器上的时区。
dateFormat 在 Graph 服务的会话中设置的日期格式。 String 否 null,代表默认格式%Y-%m-%d。
localDatetimeFormat 在 Graph 服务的会话中设置的本地日期时间格式。 String 否 null,代表默认格式%Y-%m-%dT%H:%M:%S。
zonedDatetimeFormat 在 Graph 服务的会话中设置的带时区的日期时间格式。 String 否 null,代表默认格式%Y-%m-%dT%H:%M:%S %z。
localTimeFormat 在 Graph 服务的会话中设置的本地时间格式。 String 否 null,代表默认格式%H:%M:%S。
zonedTimeFormat 在 Graph 服务的会话中设置的带时区的时间格式。 String 否 null,代表默认格式%H:%M:%S %z。
connectTimeoutMs 与 Graph 服务建立连接的超时时间(毫秒)。 Long 否 3600000
requestTimeoutMs 向 Graph 服务发送写请求的超时时间(毫秒)。 Long 否 3600000
enableDataCheck 是否检查悦数数据迁移中数据的有效性。当源数据中含有脏数据时启用此功能。 Boolean 否 false
retryTimes 写入操作失败时,重试的次数。 Integer 否 3
retryIntervalMs 写入操作失败时,两次重试操作之间的时间间隔。单位:毫秒。 Integer 否 0
enableTls 是否启用 TLS。 Boolean 否 false
disableVerifyServerCert 是否跳过服务端证书验证。 Boolean 否 false
ca 用于校验服务器证书的 CA 证书文件的路径。如果enableTls设置为true且disableVerifyServerCert设置为false,则此项必填。 String 否 无
cert 客户端证书文件的路径。如果悦数图数据库开发版的 Graph 服务的配置文件里将tls_client_verify设置为true,则此项必填。 String 否 无
key 客户端私钥文件的路径。如果悦数图数据库开发版的 Graph 服务的配置文件里将tls_client_verify设置为true,则此项必填。 String 否 无
preHooks 导入数据前需要按顺序执行的 GQL 语句。如果语句中包含换行符、括号、双引号等符号,使用"""包围该语句;如果没有,使用"包围该语句。 List 否 无

错误配置

本章节介绍悦数数据迁移中的错误配置。

配置示例

  error: {
    path: "file:///tmp/errors"
    maxRecords: 10000
  }

配置项

选项 描述 类型 是否必选 默认值
path 存储脏记录和失败记录的相对或绝对路径,这些记录以 GQL 语句的形式存储。可以指定以下来源中的路径:
  • 本地:使用本地文件系统中的绝对路径、相对路径或前缀file://加上绝对路径。
  • HDFS:使用前缀hdfs://加上 HDFS 中源数据的路径。
  • Amazon S3:使用前缀s3a://加上 Amazon S3 中源数据的路径。
  • 腾讯云:使用前缀cosn://加上腾讯云中源数据的路径。
String 否 "file:///tmp/errors/"
maxRecords 允许的脏记录和失败记录的最大总数。若设为负数,无论产生多少脏记录和失败记录,导入任务都会继续进行直到完成。 Int 否 Int.MAX_VALUE,即2,147,483,647。

Checkpoint 文件配置

本章节介绍如何在悦数数据迁移中配置 Checkpoint 文件以实现断点续传。

Note

除 Kafka 之外的所有数据源类型都可以通过配置 Checkpoint 文件实现断点续传。要为 Kafka 开启断点续传,可将配置项startingOffsets设置为latest,从最新偏移量读取数据。更多信息,请参见 Kafka 配置。

配置示例

  checkPoint: {
    path: "file:///tmp/checkpoint"
    resume: true
  } 

配置项

选项 描述 类型 是否必选 默认值
path 记录数据传输进度的 Checkpoint 文件的相对或绝对路径。在导入不同数据批次时,需为每个批次指定唯一路径。可以指定以下来源中的路径:
  • 本地:使用本地文件系统中的绝对路径、相对路径或前缀file://加上绝对路径。
  • HDFS:使用前缀hdfs://加上 HDFS 中源数据的路径。
  • Amazon S3:使用前缀s3a://加上 Amazon S3 中源数据的路径。
  • 腾讯云:使用前缀cosn://加上腾讯云中源数据的路径。
String 否 "file:///tmp/checkpoint"
resume 是否启用断点续传。 Bool 否 false

通用源配置

通用源配置指定了数据源的全局设置,具体配置根据数据源的不同而有所不同。

这些配置是可选的,也可以在源配置中针对每个数据源指定。针对特定数据源的配置将覆盖全局设置。

关于每个数据源所适用的通用配置项的详细信息,请参见各数据源的配置文档:

通用写配置

通用写配置指定了将数据写入悦数图数据库开发版 5.x 时的全局设置。

这些配置是可选的,也可以在源配置中针对每个点类型或边类型指定。针对特定点类型或边类型的配置将覆盖全局设置。

配置示例

  writeCommon:{
    enableRealTimeQPSLog: true
    batchSize:20
    mode: "INSERT IGNORE"
    ignoreHangingEdge: false
  }

配置项

选项 描述 类型 是否必选 默认值
enableRealTimeQPSLog 是否启用写请求的实时日志。
Bool 否 false
batchSize 每个写请求处理的记录数(即点和边的总和)。 Int 否 1000
mode 写入到悦数图数据库开发版时的数据操作模式。
有效值为"INSERT"、"INSERT IGNORE"、"INSERT REPLACE"、"INSERT UPDATE"、"UPDATE"、"DELETE"和"DETACH DELETE"。更多信息,请参见数据操作。
String 否 "INSERT IGNORE"
ignoreHangingEdge 是否忽略悬挂边,即两端或一端未连接点的边。可选值:
true:不报错,忽略悬挂边,但计为成功写入操作。
false:报错,悬挂边写入失败。
Bool 否 false

Note

以上通用写配置仅适用于标准导入方式(taskType: import)。如需自定义写入逻辑,请参见基于 GQL 模板导入。