导入 API 选项
导入选项 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 过程支持以下选项:
- 在导入操作中指定转换(transforms)。
- 通过指定起始实体 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 Service(导入服务)会将所有数据保存在内存中。对于包含大量数据的 ZIP 文件,这种方式可能会受到限制。
要配置临时目录,请使用应用属性 atlas.import.temp.directory。如果该属性留空,则会使用默认的内存实现。
请确保磁盘有足够的可用空间供该操作使用。
作为导入操作后端存储而创建的目录,其内容会在操作结束后被清除。
评论
登录后参与评论
KnowForge