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

时间:2019-10-07 09:03:44

标签: python boto3 boto aws-glue aws-glue-data-catalog

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

}}     )

1 个答案:

答案 0 :(得分: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位置中需要一些数据。