2

我已经通过 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"]}]}'
        }

}})

4

1 回答 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-动态框架模式

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

于 2019-10-07T16:56:31.227 回答