Source: https://dev-docs.yueshu.com.cn/v5.3.2/utilities/exchange/export-data/ Documentation version: v5.3.2 # 使用悦数数据迁移导出数据 本文介绍如何使用悦数数据迁移从悦数图数据库开发版中导出数据。你可以选择以下方式进行数据导出: - 导出至本地文件。 - 导出至悦数图数据库开发版,支持将数据从一个图导出到另一个图中,源图与目标图可以在相同或不同的悦数图数据库开发版集群中。 ## 前提条件 - 悦数数据迁移已部署。更多信息,请参见[部署悦数数据迁移](https://dev-docs.yueshu.com.cn/v5.3.2/utilities/exchange/deploy-exchange/)。 - 源数据所在的悦数图数据库开发版服务组正在运行中。更多信息,请参见[快速开始](https://dev-docs.yueshu.com.cn/v5.3.2/get-started/deploy/)。 - 若要导出数据至不同的悦数图数据库开发版集群,请确保目标悦数图数据库开发版集群的服务组正在运行中。 ## 步骤 1. 前往`yueshu-graph-exchange/`目录,使用脚本`start.sh`启动 Spark 集群,命令如下: ```` ./start.sh ```` 若启动成功,会显示 Spark master 和 worker 实例的进程 ID。 2. 在`yueshu-graph-exchange/`目录下,使用脚本`export.sh`导出数据,命令如下: ```` ./export.sh [ -f | -g ] -c "" ```` - 导出数据至本地文件时,必须指定`-f`及`-c`,然后参考[导出至本地文件](https://dev-docs.yueshu.com.cn/v5.3.2/utilities/exchange/export-data/#_5)配置`""`参数。 - 导出数据至悦数图数据库开发版时,必须指定`-g`及`-c`,然后参考[导出至悦数数据迁移](https://dev-docs.yueshu.com.cn/v5.3.2/utilities/exchange/export-data/#_6)配置`""`参数。 下表列出了所有可配置的命令行选项: | 选项 | 描述 | 是否必选 | 默认值 | `-f` | 导出数据至文件。 如果选项`-g`未指定,此项必填。 | 否 | 无 | `-g` | 导出数据至悦数图数据库开发版。 如果选项`-f`未指定,此项必填。 | 否 | 无 | `-c` | 数据导出任务的相关配置。 如果指定选项`-f`,请参见[导出至本地文件](https://dev-docs.yueshu.com.cn/v5.3.2/utilities/exchange/export-data/#_5)配置此项。 如果指定选项`-g`,请参见[导出至悦数图数据库开发版](https://dev-docs.yueshu.com.cn/v5.3.2/utilities/exchange/export-data/#_6)配置此项。 | 是 | 无 | `-j` | 悦数数据迁移 JAR 包的路径。 | 否 | `yueshu-exchange-5.3.0.jar` | `-m` | 每个作业可使用的最大内存。一个作业包含多个数据导出任务,能够实现一次完整的数据导出过程。 | 否 | `1G` | `-n` | 用于导出数据的作业数。 | 否 | `20` | `-p` | 每个作业中并行运行的核数。 | 否 | `5` | `-P` | Spark 服务器的端口。 | 否 | `1077` | `-h` | 是否打印帮助信息。 | 否 | 无 | `-s` | 您的 Spark 主目录的路径。 如已拥有自己的 Spark,按需启用此选项。 | 否 | 无 | `-o` | 您的 Spark 的主模式。 如果指定了选项`-spark`,此项必填。 | 否 | 无 注意:`n * p`的值必须小于[部署悦数数据迁移](https://dev-docs.yueshu.com.cn/v5.3.2/utilities/exchange/deploy-exchange/)时设置的`c * i`的值。 3. 等待系统运行并返回导出结果。 - 若选择导出数据至本地文件,成功提交导出命令后会显示以下示例信息: ```` ... start to export data to file... logging to /home/user/tmp/yueshu-graph-exchange/logs/export_to_file.log 25/05/06 18:21:37 INFO Nebula2File$: >>>>> finished the export! cost: 15.743s. ```` - 若选择导出数据至悦数图数据库开发版,成功提交导出命令后会显示以下示例信息: ```` ... start to export data to nebula... logging to /home/user/tmp/yueshu-graph-exchange/logs/export_to_nebula.log 25/05/06 18:21:37 INFO Nebula2Nebula$: >>>>> finished the sync! cost: 15.743s. ```` 4. 导出任务完成后,根据不同导出方式,前往对应位置查看结果。 - 导出数据至本地文件时,前往`--writePath`选项指定的路径查看导出的数据。若结果异常,在`export_to_file.log`日志文件中排查错误。 - 导出数据至悦数图数据库开发版时,前往`--targetGraphAddress`选项指定的图中查询导出的数据。若结果异常,在`export_to_nebula.log`日志文件中排查错误。 ## 配置项参考 您需要指定选项`-c`中的不同参数,来配置导出数据至本地文件或悦数数据迁移。 ### 导出至本地文件 下表列出了导出数据至本地文件时,选项`-c`的配置项信息。配置时需要用英文双引号(`"`)包围参数。例如: 将``和``分别替换为登录源实例和目标实例所用账号的当前密码。若已修改密码,请使用修改后的密码。 ```` ./export.sh -f -c "-sourceGraph 127.0.0.1:9669 -sourceGraphName movie -sourceGraphType movie_type -sourcePasswd -path file:///tmp/export1/" ```` | 选项 | 别名 | 描述 | 是否必需 | 默认值 | `--excludeEdges` | `-excludeEdges` | 不导出的边的边类型名称,多条边之间使用逗号(`,`)分隔。 | 否 | 无 | `--excludeNodes` | `-excludeNodes` | 不导出的点的点类型名称,多个点类型之间使用逗号(`,`)分隔。 | 否 | 无 | `--format` | `-f` | 导出的文件格式。支持的格式:`csv`、`txt`和`json`。 | 否 | `csv` | `--header` | `-h` | 是否在`csv`文件中写入表头。有效值:`true`和`false`。 | 否 | `true` | `--includeNode` | `-includeNode` | 仅导出的点的点类型,您可用作导出任务测试。 | 否 | 无 | `--writePath` | `-path` | 保存导出的数据的路径。 若导出至 HDFS,路径前缀为`hdfs://`。 若导出至本地文件系统,路径前缀为`file:///`。 | 是 | 无 | `--readBatchSize` | `-readBatchSize` | 每次读取请求的批大小。 | 否 | 无 | `--sep` | `-s` | `csv`文件中每行数据之间的分隔符。 | 否 | 逗号(`,`) | `--sourceGraphAddress` | `-sourceGraph` | 源数据所在的 Graph 服务的地址,多个地址之间使用逗号(`,`)分隔。 | 是 | 无 | `--sourceGraphName` | `-sourceGraphName` | 源数据的图名称。 | 是 | 无 | `--sourceGraphType` | `-sourceGraphType` | 源数据的图类型。 | 是 | 无 | `--sourceGraphPassword` | `-sourcePasswd` | 源数据所在的 Graph 服务登录密码。 | 是 | 无 | `--sourceSchema` | `-sourceSchema` | 源数据的 Schema 路径。 | 否 | 无 | `--sourceGraphUser` | `-sourceUser` | 源数据所在的 Graph 服务的用户名。 | 否 | `root` | `--timeout` | `-timeout` | 客户端的超时时间。超过该时间请求将被中止。单位:秒。 | 否 | `5` ### 导出至悦数图数据库开发版 下表列出了导出数据至悦数数据迁移时,选项`-c`的配置项信息。配置时需要用英文双引号(`"`)包围参数。例如: ```` ./export.sh -g -c "-sourceGraph 127.0.0.1:9669 -sourceGraphName movie -sourceGraphType movie_type -sourcePasswd -targetGraph 127.0.0.1:9669 -targetGraphName movie1 -targetPasswd " ```` | 选项 | 别名 | 描述 | 是否必需 | 默认值 | `--excludeEdges` | `-excludeEdges` | 不导出的边的边类型名称,多条边之间使用逗号(`,`)分隔。 | 否 | 无 | `--excludeNodes` | `-excludeNodes` | 不导出的点的点类型名称,多个点类型之间使用逗号(`,`)分隔。 | 否 | 无 | `--includeNode` | `-includeNode` | 仅导出的点的点类型,您可用作导出任务测试。 | 否 | 无 | `--mode` | `-m` | 写入数据的模式。所有模式均插入不存在的点或边;点或边已存在时,按以下方式处理: - `insert`:导出失败并报告错误。 - `insert_ignore`:忽略本次写入,保留原有数据,不报错。 - `insert_replace`:用本次提交的数据替换原有点或边。 - `insert_update`:用本次提交的属性值更新原有点或边。 更多信息,请参见 [INSERT](https://dev-docs.yueshu.com.cn/v5.3.2/database-gql-reference/dml/insert/#insert-modes)。 | 否 | `insert_ignore` | `--parallel` | `-p` | 写入数据的并行度,例如`-1`表示与悦数图数据库开发版分区的并行度相同。更多信息,请参见 [SHOW PARTITIONS](https://dev-docs.yueshu.com.cn/v5.3.2/database-gql-reference/data-admin/show/show-partitions/)。 | 否 | `-1` | `--readBatchSize` | `-readBatchSize` | 每次读取请求的批大小。 | 否 | 无 | `--sourceGraphAddress` | `-sourceGraph` | 源数据所在的 Graph 服务的地址,多个地址之间使用逗号(`,`)分隔。 | 是 | 无 | `--sourceGraphName` | `-sourceGraphName` | 源数据的图名称。 | 是 | 无 | `--sourceGraphType` | `-sourceGraphType` | 源数据的图类型。 | 是 | 无 | `--sourceGraphPassword` | `-sourcePasswd` | 源数据所在的 Graph 服务登录密码。 | 是 | 无 | `--sourceSchema` | `-sourceSchema` | 源数据的 Schema 路径。 | 否 | 无 | `--sourceGraphUser` | `-sourceUser` | 源数据所在的 Graph 服务的用户名。 | 否 | `root` | `--targetGraphAddress` | `-targetGraph` | 数据写入的 Graph 服务的目标地址,多个地址之间使用逗号(`,`)分隔。 | 是 | 无 | `--targetGraphName` | `-targetGraphName` | 数据写入的图名称。若未指定,系统自动写入源数据的图名称。 | 否 | 无 | `--targetGraphType` | `-targetGraphType` | 数据写入的图类型。若未指定,系统自动写入源数据的图类型。 | 否 | 无 | `--targetGraphPassword` | `-targetPasswd` | 数据写入的 Graph 服务登录密码。 | 是 | 无 | `--targetSchema` | `-targetSchema` | 数据写入的 Schema 路径。 | 否 | 无 | `--targetUser` | `-targetUser` | 数据写入的 Graph 服务的用户名。 | 否 | `root` | `--timeout` | `-timeout` | 客户端的超时时间。超过该时间请求将被中止。单位:秒。 | 否 | `5` | `--writeBatchSize` | `-writeBatchSize` | 每次写入请求的批大小。 | 否 | 无