создать динамический фрейм со схемой из таблицы каталога - PullRequest
0 голосов
/ 07 октября 2019

Я создал таблицу в таблице каталога с помощью create_table в API-интерфейсе aws.

С помощью этого примера кода ниже код создает таблицу в каталоге.

Когда я создаю динамический фрейм из этой таблицы,он пуст без схемы.

Я хочу создать пустой динамический фрейм с этими четырьмя столбцами

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 голосов
/ 07 октября 2019

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.

...