导入选项
导入 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。如果该属性留空,则使用默认的内存实现。
请确保操作期间有足够的可用磁盘空间。
作为导入操作后备存储而创建的目录,其内容会在操作结束后被清空。
评论
登录后参与评论
KnowForge