使用目录表中的架构创建动态框架

问题描述 投票:0回答:1

我已经通过API AWS胶水中的create_table在目录表中创建了表。

通过下面的代码示例此代码在目录中创建表。

当我从该表创建动态框架时,它是空的,没有模式。

我想用这四列创建空的动态框架

response = client.create_table(

      DatabaseName= 'xxxxxxxxxx',
      TableInput={'Name':'xxxxxxxxxx',
        'StorageDescriptor': {
        'Columns': [
            {'Name': 'column_1', 'Type': 'string', 'Comment': 'None'},
            {'Name': 'column_2', 'Type': 'string', 'Comment': 'None'},
            {'Name': 'column_2', 'Type': 'string', 'Comment': 'None'},
            {'Name': 'column_2', 'Type': 'string', 'Comment': 'None'}
        ],
        'Location':'s3://xxxxxxx/',
        'InputFormat': 'org.apache.hadoop.hive.ql.io.avro.AvroContainerInputFormat',
        'OutputFormat': 'org.apache.hadoop.hive.ql.io.avro.AvroContainerOutputFormat',
        'SerdeInfo': {
            'Name': 'avro',
            'SerializationLibrary': 'org.apache.hadoop.hive.serde2.avro.AvroSerDe',
            'Parameters':'{"type":"record","name":"DynamicRecord","namespace":"root","fields":[{"name":"column_1","type":["string","null"]},{"name":"column_2","type":["string","null"]},{"name":"column_3","type":["string","null"]},{"name":"column_4","type":["string","null"]}]}'
        }

}})

python boto3 boto aws-glue aws-glue-data-catalog
1个回答
0
投票

DynamicFrame与DataFrame相似,只是每个记录都是自描述的,因此最初不需要架构。相反,AWS Glue在需要时即时计算模式,并进行显式编码使用选择(或并集)类型的架构不一致。你可以解决这些不一致使您的数据集与数据兼容需要固定模式的存储。

链接:https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-crawler-pyspark-extensions-dynamic-frame.html#aws-glue-api-crawler-pyspark-extensions-dynamic-frame-schema

您可以使用apply_mapping()显式设置架构,或在s3位置中需要一些数据。

© www.soinside.com 2019 - 2024. All rights reserved.