[英]How to get AWS Glue Schema Registry schema definition using boto3?
我的目标是在 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'
}
#如果您使用的是胶水模式注册表:
session = boto3.Session( region_name='us-east-1')
glue_client = session.client('glue')
#glue = boto3.client('glue')
response = glue_client.list_registries(
MaxResults=23
)
schema_message = glue_client.get_schema_version(
SchemaId={
'SchemaName': 'string',
'RegistryName': 'string'
},
SchemaVersionNumber={
'LatestVersion': True
}
)
print(schema_message['SchemaDefinition'])
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.