导出 API
Export API
总体方法如下:
- 消费者指定要导出的数据范围(详见下文)。
- 如果调用成功,API 将以指定的格式返回数据流。
- 调用失败时将返回错误。
有关导出 hdfs_path 实体的详细信息,请参见此处。
| 标题 | Export API |
|---|---|
| 示例 | 参见下方的示例部分。 |
| URL | api/atlas/admin/export |
| 方法 | POST |
| URL 参数 | 无 |
| 数据参数 | 类 AtlasExportRequest 用于指定要导出的项。AtlasObjectId 列表允许在一次会话中指定多个要导出的项。AtlasObjectId 是一个由实体类型、唯一属性名称、唯一属性值组成的三元组。可以指定多个项。参见下方的示例。 |
| 成功响应 | 以 application/zip 格式返回的文件流。 |
| 错误响应 | 系统内部处理的错误将以 AtlasBaseException 的形式返回。 |
| 备注 | 调用方可以选择通过编程方式使用 java.io.ByteOutputStream,或手动将流的内容保存到磁盘上的文件中,来消费该 API 的输出。 |
方法签名
@POST
@Path("/export")
@Consumes("application/json;charset=UTF-8")附加选项
可以为 Export 操作指定附加参数。
当前实现提供 2 个选项,均为可选:
matchType 该选项用于配置获取起始实体的方式,可取以下值:
- startsWith 搜索以指定条件为前缀的实体。
- endsWith 搜索以指定条件为后缀的实体。
- contains 搜索包含指定条件作为子字符串的实体。
- matches 搜索与指定条件正则匹配的实体。
fetchType 该选项用于配置获取实体的方式,可取以下值:
- FULL:获取与起始实体直接或间接相连的所有实体。例如,如果指定的起始实体是一个表,则该选项将获取该表、其所属数据库以及该数据库中的所有其他表。
- CONNECTED:获取与起始实体直接相连的所有实体。例如,如果指定的起始实体是一个表,则该选项仅获取该表及其数据库实体。
- INCREMENTAL:详情参见此处。
如果未指定 matchType,则使用精确匹配,即整个字符串都用于搜索条件。
使用 matchType 进行搜索适用于所有类型的实体。它对于匹配类型为 hdfs_path 的实体尤为有用(参见此处)。
fetchType 选项默认为 FULL。
完整示例见下节。
导出 ZIP 文件的内容
导出的 ZIP 文件中包含以下条目:
atlas-export-result.json:
- 输入过滤器:导出的范围。
- 文件格式:为导出操作选择的格式。
- 指标:已导出的实体定义、分类和实体的数量。
atlas-typesdef.json:已导出实体的类型定义。
atlas-export-order.json:实体的导出顺序。
{guid}.json:每个实体以与其 ID 对应的文件名单独导出。
示例
下面的 AtlasExportRequest 展示了尝试导出集群 cl1 中 2 个数据库的过滤器:
{
"itemsToExport": [
{ "typeName": "hive_db", "uniqueAttributes": { "qualifiedName": "accounts@cl1" } },
{ "typeName": "hive_db", "uniqueAttributes": { "qualifiedName": "hr@cl1" } }
]
}下面的 AtlasExportRequest 将 fetchType 指定为 FULL。matchType 选项将获取 accounts@cl1。
{
"itemsToExport": [
{ "typeName": "hive_db", "uniqueAttributes": { "qualifiedName": "accounts@" } }
],
"options": {
"fetchType": "FULL",
"matchType": "startsWith"
}
}下面的 AtlasExportRequest 指定了 guid 而非 uniqueAttributes,用于获取 accounts@cl1。
{
"itemsToExport": [
{ "typeName": "hive_db", "guid": "846c5e9c-3ac6-40ju-8289-fb0cebm64783" }
],
"options": {
"fetchType": "FULL",
}
}下方的 AtlasExportRequest 将 fetchType 指定为 connected。matchType 选项将获取数据库中存在的 accountsReceivable、accountsPayable 等数据。
{
"itemsToExport": [
{ "typeName": "hive_db", "uniqueAttributes": { "qualifiedName": "accounts" } }
],
"options": {
"fetchType": "CONNECTED",
"matchType": "startsWith"
}
}以下是 QuickStart 中 Sales 数据库导出的 AtlasExportResult JSON。
其中 metrics 包含本次操作中导出的类型数量和实体数量。
{
"clientIpAddress": "10.0.2.15",
"hostName": "10.0.2.2",
"metrics": {
"duration": 1415,
"entitiesWithExtInfo": 12,
"entity:DB_v1": 2,
"entity:LoadProcess_v1": 2,
"entity:Table_v1": 6,
"entity:View_v1": 2,
"typedef:Column_v1": 1,
"typedef:DB_v1": 1,
"typedef:LoadProcess_v1": 1,
"typedef:StorageDesc_v1": 1,
"typedef:Table_v1": 1,
"typedef:View_v1": 1,
"typedef:classification": 6
},
"operationStatus": "SUCCESS",
"request": {
"itemsToExport": [
{
"typeName": "DB_v1",
"uniqueAttributes": {
"name": "Sales"
}
}
],
"options": {
"fetchType": "full"
}
},
"userName": "admin"
}CURL 调用
以下示例 CURL 调用演示了 QuickStart 数据库的导出操作。
curl -X POST -u adminuser:password -H "Content-Type: application/json" -H "Cache-Control: no-cache" -d '{
"itemsToExport": [
{ "typeName": "DB", "uniqueAttributes": { "name": "Sales" }},
{ "typeName": "DB", "uniqueAttributes": { "name": "Reporting" }},
{ "typeName": "DB", "uniqueAttributes": { "name": "Logging" }}
],
"options": { "fetchType": "full" }
}' "http://localhost:21000/api/atlas/admin/export" > quickStartDB.zip评论
登录后参与评论
KnowForge