导出 API
Export API
总体方式如下:
- 消费者指定要导出的数据范围(详见下文)。
- 如果调用成功,API 将按指定格式返回数据流。
- 调用失败时将返回错误。
关于导出 hdfs_path 实体的详情,请参阅此处。
| 标题 | 导出 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 替代 uniqueAttribues 来获取 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 调用
以下是演示导出 QuickStart 数据库的 CURL 调用示例。
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