Как с помощью Amazon Athena создать таблицу только с определенными файлами (подстановочными знаками)?

Мое ведро имело такую ​​структуру:

mybucket/raw/i1.json
mybucket/raw/i2.json

Было легко и просто использовать Amazon Athena, используя приведенный ниже код для создания таблицы.

CREATE EXTERNAL TABLE IF NOT EXISTS myclients.big_clients (
  `id_number` string,
  `txt` string,
   ...
)
ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe'
WITH SERDEPROPERTIES (
  'serialization.format' = '1',
) LOCATION 's3://mybucket/raw/'
TBLPROPERTIES ('has_encrypted_data'='false');

Теперь я столкнулся с некоторыми проблемами с миграцией в структуре ведра.

Новая структура корзины показана ниже.

mybucket/raw/1/i1.json
mybucket/raw/1/docs/doc_1.json
mybucket/raw/1/docs/doc_2.json
mybucket/raw/1/docs/doc_3.json
mybucket/raw/2/i2.json
mybucket/raw/2/docs/doc_1.json
mybucket/raw/2/docs/doc_2.json

Хотел бы я теперь создать две таблицы (та же таблица, которая была у меня до переноса, и новая, только с документами). Можно ли как-то это сделать, не переставляя файлы в другой папке? Я ищу какой-то подстановочный знак для файлов ведра при создании таблицы.

CREATE EXTERNAL TABLE IF NOT EXISTS myclients.big_clients (
  `id_number` string,
  `txt` string,
   ...
)
ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe'
WITH SERDEPROPERTIES (
  'serialization.format' = '1',
  'input.regex' = 'i*.json'
) LOCATION 's3://mybucket/raw/'
TBLPROPERTIES ('has_encrypted_data'='false');

CREATE EXTERNAL TABLE IF NOT EXISTS myclients.big_clients_docs (
  `dt` date,
  `txt` string,
  `id_number` string,
  `s3_doc_path` string,
  `s3_doc_path_origin` string
)
ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe'
WITH SERDEPROPERTIES (
  'serialization.format' = '1',
  'input.regex' = 'doc_*.json'
) LOCATION 's3://mybucket/raw/'
TBLPROPERTIES ('has_encrypted_data'='false');

person Arthur Alvim    schedule 30.05.2017    source источник


Ответы (1)


Я искал то же самое. К сожалению, это невозможно из-за того, что s3 API не поддерживает подстановочные знаки (требуется сканирование всех ключей на стороне клиента, что медленно). В документации для athena также указано, что это не поддерживается.

person Jilles van Gurp    schedule 10.07.2018