Source: https://dev-docs.yueshu.com.cn/v5.3.2/utilities/exchange/config/ Documentation version: v5.3.2 # 数据导入配置 本文介绍悦数数据迁移导入功能的配置文件。 ## 配置文件结构 悦数数据迁移配置文件的结构如下: ```` { taskType: nebula: {} error: {} checkPoint: {} sourcesCommon: {} writeCommon: {} sources: [] } ```` 对于不同的数据源,悦数数据迁移配置文件的结构都是相同的,区别主要在`sourcesCommon`和`sources`部分。在悦数数据迁移包的目录`yueshu-graph-exchange/template/`中,提供了针对各个数据源的配置文件模板。 如上所示,配置文件包含以下部分: - `taskType`:指定任务类型。更多信息,请参见[任务类型配置](https://dev-docs.yueshu.com.cn/v5.3.2/utilities/exchange/config/#_3)。 - `nebula`:指定悦数图数据库开发版的连接配置。更多信息,请参见[悦数图数据库开发版配置](https://dev-docs.yueshu.com.cn/v5.3.2/utilities/exchange/config/#_4)。 - `error`:指定导入过程中如何处理脏记录和失败记录。更多信息,请参见[错误配置](https://dev-docs.yueshu.com.cn/v5.3.2/utilities/exchange/config/#_7)。 - `checkPoint`:指定断点续传相关的配置。更多信息,请参见 [Checkpoint 文件配置](https://dev-docs.yueshu.com.cn/v5.3.2/utilities/exchange/config/#checkpoint)。 - `sourcesCommon`:指定数据源的通用配置。更多信息,请参见[通用源配置](https://dev-docs.yueshu.com.cn/v5.3.2/utilities/exchange/config/#_12)。 - `writeCommon`:指定写操作的通用配置。更多信息,请参见[通用写配置](https://dev-docs.yueshu.com.cn/v5.3.2/utilities/exchange/config/#_13)。 - `sources`:指定数据源的连接信息和特定配置、如何预处理源数据以及如何将源数据映射到悦数图数据库开发版的图元素。更多信息,请参见[源配置](https://dev-docs.yueshu.com.cn/v5.3.2/utilities/exchange/config/sources/)。 ## 任务类型配置 | 选项 | 描述 | 类型 | 是否必选 | 默认值 | `taskType` | 任务类型。有效值: - `import`:导入数据。 - `check`:检查配置文件的有效性,但不导入数据。检查结果记录在`yueshu-graph-exchange/`目录或者通过`-log`指定的目录下的`logs/import.log`日志文件中。 - `gqlTemplate`:通过自定义 GQL 模板将数据导入悦数图数据库开发版。更多信息,请参见[基于 GQL 模板导入](https://dev-docs.yueshu.com.cn/v5.3.2/utilities/exchange/import-data/template-import/)。 - `dryRun`:执行预演(dry run),即悦数数据迁移执行导入过程的预演,包括读取源数据,统计要导入的记录数,但不会把数据导入悦数图数据库开发版。 - `reload`:重新加载执行失败的 GQL 语句。每次数据导入任务完成后,都会返回一个唯一的名为`app id`的 ID。可以指定`app id`来重新加载在上一次运行中执行失败的 GQL 语句。此外,可以前往[`error.path`](https://dev-docs.yueshu.com.cn/v5.3.2/utilities/exchange/config/#_7)路径中查看失败的记录。 - `gql`:根据最多 200 条源数据生成含有 GQL 语句的文件。GQL 语句基于[通用写配置](https://dev-docs.yueshu.com.cn/v5.3.2/utilities/exchange/config/#_13)生成,存储至`/tmp/gql/`文件夹中,其中一条语句代表一个写请求。 若[数据导入的命令](https://dev-docs.yueshu.com.cn/v5.3.2/utilities/exchange/import-data/#3)中指定了选项`-check`、`-dry`或`-reload`且与此处指定的任务类型冲突,以导入命令中指定的选项为准。例如,导入命令中指定了选项`-dry`,但是设置本配置项为`check`,则系统执行预演操作。 | String | 是 | `import` ## 悦数图数据库开发版配置 本章节介绍如何在悦数数据迁移中配置悦数图数据库开发版。 ### 配置示例 将``替换为登录账号的当前密码。若已修改密码,请使用修改后的密码。 ```` nebula: { graphAddr: "127.0.0.1:9669" graphName: "movie" user: "root" enableEncryptPasswd: false passwd: "" 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` | 是否使用加密密码。更多信息,请参见[加密密码](https://dev-docs.yueshu.com.cn/v5.3.2/utilities/exchange/config/encrypt/)。 | Boolean | 否 | 无 | `passwd` | 登录账号的当前密码。若`enableEncryptPasswd`为`true`,使用该密码的加密值,见[加密密码](https://dev-docs.yueshu.com.cn/v5.3.2/utilities/exchange/config/encrypt/)。 | 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 配置](https://dev-docs.yueshu.com.cn/v5.3.2/utilities/exchange/config/sources/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` ## 通用源配置 通用源配置指定了数据源的全局设置,具体配置根据数据源的不同而有所不同。 这些配置是可选的,也可以在[源配置](https://dev-docs.yueshu.com.cn/v5.3.2/utilities/exchange/config/sources/)中针对每个数据源指定。针对特定数据源的配置将覆盖全局设置。 关于每个数据源所适用的通用配置项的详细信息,请参见各数据源的配置文档: - [本地文件系统配置](https://dev-docs.yueshu.com.cn/v5.3.2/utilities/exchange/config/sources/local/#_3) - [HDFS 配置](https://dev-docs.yueshu.com.cn/v5.3.2/utilities/exchange/config/sources/hdfs/#_3) - [Hive 配置](https://dev-docs.yueshu.com.cn/v5.3.2/utilities/exchange/config/sources/hive/#_3) - [JDBC 配置](https://dev-docs.yueshu.com.cn/v5.3.2/utilities/exchange/config/sources/jdbc/#_3) - [Kafka 配置](https://dev-docs.yueshu.com.cn/v5.3.2/utilities/exchange/config/sources/kafka/#_3) - [MaxCompute 配置](https://dev-docs.yueshu.com.cn/v5.3.2/utilities/exchange/config/sources/maxcompute/#_3) - [Neo4j 配置](https://dev-docs.yueshu.com.cn/v5.3.2/utilities/exchange/config/sources/neo4j/#_3) - [NebulaGraph 3.x 配置](https://dev-docs.yueshu.com.cn/v5.3.2/utilities/exchange/config/sources/nebula3/#_3) - [Amazon S3 配置](https://dev-docs.yueshu.com.cn/v5.3.2/utilities/exchange/config/sources/s3/#_3) - [腾讯云配置](https://dev-docs.yueshu.com.cn/v5.3.2/utilities/exchange/config/sources/tencent/#_3) ## 通用写配置 通用写配置指定了将数据写入悦数图数据库开发版 5.x 时的全局设置。 这些配置是可选的,也可以在[源配置](https://dev-docs.yueshu.com.cn/v5.3.2/utilities/exchange/config/sources/)中针对每个点类型或边类型指定。针对特定点类型或边类型的配置将覆盖全局设置。 ### 配置示例 ```` 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"`。更多信息,请参见[数据操作](https://dev-docs.yueshu.com.cn/v5.3.2/database-gql-reference/dml/)。 | String | 否 | `"INSERT IGNORE"` | `ignoreHangingEdge` | 是否忽略悬挂边,即两端或一端未连接点的边。可选值: `true`:不报错,忽略悬挂边,但计为成功写入操作。 `false`:报错,悬挂边写入失败。 | Bool | 否 | `false` Note 以上通用写配置仅适用于标准导入方式(`taskType: import`)。如需自定义写入逻辑,请参见[基于 GQL 模板导入](https://dev-docs.yueshu.com.cn/v5.3.2/utilities/exchange/import-data/template-import/)。