Создание разделов с помощью оператора athena alter table - PullRequest
0 голосов
/ 07 октября 2019

Этот оператор "создать таблицу" работает правильно.

CREATE EXTERNAL TABLE default.no_details_2018_csv (
  `id` string,
  `client_id` string,
  `client_id2` string,
  `id_1` string,
  `id_2` string,
  `client_id3` string,
  `code_1` string,
  `code_2` string,
  `code_3` string
)
STORED AS PARQUET
LOCATION 's3://some_bucket/athena-parquet/no_details/2018/'
tblproperties ("parquet.compress"="SNAPPY");

Данные за 2018 год, доступные в формате паркета, можно найти в этой папке / папке.

1) Какдобавить разделы в эту таблицу? Мне нужно добавить данные за 2019 год в ту же таблицу, ссылаясь на новое местоположение s3: // some_bucket / athena-parquet / no_details / 2019 / Данные за оба года доступны в формате паркет (snappy).

2) Возможно ли разделить по месяцам, а не по годам? Другими словами, нормально ли иметь 24 раздела вместо 2? Будет ли новая целевая таблица также иметь формат паркета, как исходные данные? Столбец code_2, упомянутый выше, выглядит так: «20181013133839». Мне нужно использовать первые 4 символа для годовых (или 6 для ежемесячных) разделов.

1 Ответ

1 голос
/ 07 октября 2019

Первая таблица должна быть создана как EXTERNAL TABLE Проверьте это

Образец -

CREATE EXTERNAL TABLE default.no_details_table (
  `id` string,
  `client_id` string,
  `client_id2` string,
  `id_1` string,
  `id_2` string,
  `client_id3` string,
  `code_1` string,
  `code_2` string,
  `code_3` string
)
PARTITIONED BY (year string)
STORED AS PARQUET
LOCATION 's3://some_bucket/athena-parquet/no_details/'
tblproperties ("parquet.compress"="SNAPPY");

Вы можете добавить раздел как

ALTER TABLE default.no_details_table ADD PARTITION (year='2018') LOCATION 's3://some_bucket/athena-parquet/no_details/2018/';

Если вы хотите иметь больше разделов для каждого месяца или дня, создайте таблицу с

PARTITIONED BY (day string)

Но вам необходимо поместить данные дня в путь -

s3://some_bucket/athena-parquet/no_details/20181013/
...