导入/导出

导入选项

qianmoQqianmoQ· 更新于 2026-09-28· 阅读 6 分钟· 0 次阅读

登录后可跨设备保存划线和私人笔记登录

导入 API 选项

导入 API 的选项以 options JSON 形式指定。由于该 API 接受多部分表单数据,因此可以在同一个 CURL 调用中指定多个输入流。

使用 CURL 调用的示例

curl -g -X POST -u adminuser:password -H "Content-Type: multipart/form-data"
            -H "Cache-Control: no-cache"
            -F request=@importOptions.json
            -F data=@quickStartDB.zip
            "http://localhost:21000/api/atlas/admin/import"

要使用默认设置,请将 importOptions.json 的内容设置为:

{
  "options": {
  }
}

选项

Import 过程支持以下选项:

  • 在导入操作中指定转换规则。
  • 通过指定起始实体 GUID 来恢复导入。
  • 可选择性地导入类型定义。
  • 处理大规模导入。

转换(Transforms)

在导入过程中,可以修改传入实体的属性值。

具体方法是指定实体类型、要修改的属性,以及修改的方式。

目前支持以下转换方式:

  • lowercase:将属性值转换为小写。
  • replace:执行字符串查找和替换操作。该转换接受两个参数,第一个是待查找的字符串,第二个是用于替换的字符串。

示例:

下面的示例对 hive_table 的 qualifiedName 属性应用了几个转换。首先将值转换为小写,然后查找 'cl1',如果找到则将其替换为 'cl2'。

要使用此选项,将 importOptions.json 的内容设置为:

{
  "options": {
    "transforms": {"hive_table": { "qualifiedName": [ replace:@cl1:@cl2 ] }, "hive_db": { "qualifiedName": [ replace:@cl1:@cl2 ] } }
  }
}

有关此选项适用场景的详细信息,请参考 ATLAS-1825。

起始 Guid 或起始索引

当导入操作正在进行时,如果服务器宕机,可以从中断前最后一个成功导入的实体处恢复导入。这样导入就可以从上次中断的位置继续进行。

服务端日志也进行了改进,会显示最后成功导入的实体的详细信息,包括该实体在导入列表中的索引位置以及实体的 guid。二者中的任意一个都可用于指定恢复导入的位置。

要使用此选项,请将 importOptions.json 的内容设置为:

{
  "options": {
    "startGuid": "bd97c78e-3fa5-4f9c-9f48-3683ca3d1fb1"
  }
}

要使用 startPosition,请在 importOptions.json 中加入以下内容:

{
  "options": {
    "startPosition": "332"
  }
}

使用该行为的步骤:

  • 启动一次导入(使用 CURL),导入量较大,比如约 1000 个实体。
  • 在导入进行过程中,停止 Atlas 服务器(使用 atlas_stop.py)。
  • 从日志文件 /var/log/atlas/application.log 中获取最后成功导入的实体 GUID 或索引位置。
  • 将该 guid 更新到 importOptions.json 中。
  • 重新启动导入。

可选的类型定义导入

Export 的输出包含 atlas-typedef.json,其中含有已导出实体的类型定义。

默认情况下(即未指定任何选项时),类型定义会被导入并应用于导入目标系统,之后才执行实体导入。

在某些情况下,您不希望修改类型定义。与其修改类型,导入失败可能更为可取。

该选项允许选择性地导入类型定义。该选项默认设置为 true,表示导入类型定义。当该选项设置为 false 时,源中已有的类型定义将不会被导入。如果要导入的实体与执行导入的系统中已有的类型不匹配,操作将会失败。

下表列出了类型定义导入过程中所处理的各种情况:

条件****操作

传入的类型在目标系统中不存在
创建该类型。

待导入的类型与目标系统中的类型相同
不做任何更改。

待导入的类型与目标系统中的类型在某些属性上存在差异
目标系统中的类型将更新为源中所包含的属性。
目标系统可能拥有源中所没有的额外属性。
此时,目标系统的类型属性将是两者的并集。
目标系统中的属性不会被删除以匹配源。
如果属性的类型不同,导入过程将中止并记录异常。

要使用该选项,请将 importOptions.json 的内容设置为:

{
  "options": {
    "updateTypeDefinition": true
  }
}

指定从服务器位置导入的文件

当要导入的文件位于服务器上的某个位置时,可以使用 importfile API。它的行为与 Import API 相同。

要使用该选项,请将 importOptions.json 的内容设置为:

{
  "options": {
    "fileName": "/root/fileToBeImported.zip"
  }
}

CURL

curl -g -X POST -u adminuser:password -H "Content-Type: application/json"
            -H "Cache-Control: no-cache"
            -d r@importOptions.json
            "http://localhost:21000/api/atlas/admin/importfile"

处理大型导入

默认情况下,Import 服务会将所有数据存储在内存中。这对于包含大量数据的 ZIP 文件来说可能会受到限制。

要配置临时目录,请使用应用属性 atlas.import.temp.directory。如果该属性留空,则使用默认的内存实现。

请确保操作期间有足够的可用磁盘空间。

作为导入操作后备存储而创建的目录,其内容会在操作结束后被清空。

评论

登录后参与评论

正在加载评论…