Как загрузить пары ключ-значение (MAP) в Athena из файла Parquet? - PullRequest
0 голосов
/ 17 июня 2020

У меня ведро S3 заполнено файлами .gz.parquet. Я хочу сделать их доступными в Афине. Для этого я создаю в Athena таблицу, которая указывает на ведро s3:

CREATE EXTERNAL TABLE user_db.table (
pan_id bigint,
dev_id bigint,
parameters ?????, 
start_time_local bigint
                                     )
STORED AS PARQUET
LOCATION ‘s3://bucket/path/to/folder/containing_files/’
tblproperties (“parquet.compression”=“GZIP”)
;

Как правильно указать тип данных для столбца параметров?

Используя # parquet-tools schema, Я вижу следующую схему файлов данных:

  optional int64 pan_id;
  optional int64 dev_id;
  optional group parameters (MAP) {
    repeated group key_value {
      required binary key (UTF8);
      optional binary value (UTF8);
    }
  }
  optional int96 start_time_local;

Используя # parquet-tools head, я вижу следующее значение для одной строки данных:

pan_id = 1668490
dev_id = 6843371
parameters:
.key_value:
..key = doc_id
..value = c2bd3593d7015fb912d4de229a302379babcf6a00a203fcf
.key_value:
..key = variables
..value = {“video_id”:“2313675068886132",“surface”:“post”}
start_time_local = QFOHvvYvAAAzhCUA

Я благодарен за любую помощь Вы можете дать. Мне не удалось найти хорошую документацию для типа данных MAP, используемого в CREATE TABLE.

Ответы [ 2 ]

0 голосов
/ 21 июня 2020

Карты объявлены как map<string,string> (для преобразования строки в строку также возможны другие типы), в вашем случае весь DDL таблицы будет:

CREATE EXTERNAL TABLE user_db.table (
  pan_id bigint,
  dev_id bigint,
  parameters map<string,string>, 
  start_time_local bigint
)
STORED AS PARQUET
LOCATION 's3://bucket/path/to/folder/containing_files/'
tblproperties ("parquet.compression" = "GZIP")

Тип карты - это предпоследний в списке список типов данных Athena

0 голосов
/ 17 июня 2020

Вы можете использовать AWS Glue Crawler для автоматического получения схемы из ваших файлов Parquet.

Определение AWS Glue Crawler: https://docs.aws.amazon.com/glue/latest/dg/add-crawler.html

...