python - 如何使用 boto3 获取 AWS Glue 架构注册表架构定义?
问题描述
我的目标是在 S3 中接收 csv 文件,将它们转换为 avro,并根据 AWS 中的适当模式验证它们。
我根据已有的 .avsc 文件在 AWS Glue Registry 中创建了一系列架构:
{
"namespace": "foo",
"type": "record",
"name": "bar.baz",
"fields": [
{
"name": "column1",
"type": ["string", "null"]
},
{
"name": "column2",
"type": ["string", "null"]
},
{
"name": "column3",
"type": ["string", "null"]
}
]
}
但是一旦我尝试从 Glue 中提取模式,API 似乎并没有提供定义细节:
glue = boto3.client('glue')
glue.get_schema(
SchemaId={
'SchemaArn': schema['SchemaArn']
}
)
返回:
{
'Compatibility': 'BACKWARD',
'CreatedTime': '2021-08-11T21:09:15.312Z',
'DataFormat': 'AVRO',
'LatestSchemaVersion': 2,
'NextSchemaVersion': 3,
'RegistryArn': '[my-registry-arn]',
'RegistryName': '[my-registry-name]',
'ResponseMetadata': {
'HTTPHeaders': {
'connection': 'keep-alive',
'content-length': '854',
'content-type': 'application/x-amz-json-1.1',
},
'HTTPStatusCode': 200,
'RetryAttempts': 0,
},
'SchemaArn': '[my-schema-arn]',
'SchemaCheckpoint': 2,
'SchemaName': '[my-schema-name]',
'SchemaStatus': 'AVAILABLE',
'UpdatedTime': '2021-08-11T21:09:17.312Z',
}
有没有办法以编程方式检索模式的 Glue 模式注册表定义?还是我在尝试做的事情上采取了错误的方法?
解决方案
经过更多的挖掘,我发现了我一直忽略的名称有点混乱的get_schema_version()SchemaDefinition
方法,它返回:
{
'SchemaVersionId': 'string',
'SchemaDefinition': 'string',
'DataFormat': 'AVRO'|'JSON',
'SchemaArn': 'string',
'VersionNumber': 123,
'Status': 'AVAILABLE'|'PENDING'|'FAILURE'|'DELETING',
'CreatedTime': 'string'
}
推荐阅读
- cmake - CMAKE's undefined variable in document 3.21.but 可以使用
- tensorflow - 检查失败:使用 Keras 时出现 cudnnSetTensorNdDescriptor 错误
- google-api - youtube-api是否有一种关于视频版权摘要和状态的方法?
- javascript - d3js直线颜色被其他线条覆盖
- javascript - 处理来自多个 API 的错误时如何避免嵌套 promise
- java - Jackson MismatchedInputException(没有从字符串值反序列化的字符串参数构造函数/工厂方法)
- powershell - Invoke-RestMethod 在尝试访问 Power BI 时抛出禁止错误 403
- xml - VBA 编码 - 我有分层 DOM 树 XML 文件要导入到 Access 表中。什么是最好的:将 XML 解析为文本?msxml2? XSLT?
- javascript - 用于遍历数组 nodejs
- python - 如何将编写器格式更改为数据框?