Выбор конкретных файлов для Афины - PullRequest
0 голосов
/ 13 марта 2019

При создании таблицы в Афине я не могу создавать таблицы с использованием определенных файлов.Есть ли способ выбрать все файлы, начиная с "year_2019" из данного сегмента?Например, s3: //bucketname/prefix/year_2019*.csv


Документация очень ясна и не разрешена.

From: https://docs.aws.amazon.com/athena/latest/ug/tables-location-format.html

Athena считывает все файлы в расположении Amazon S3, указанном в операторе CREATE TABLE, и не может игнорировать любые файлы, включенные в префикс.Когда вы создаете таблицы, включайте в путь Amazon S3 только те файлы, которые Athena должна прочитать.Используйте функции AWS Lambda для сканирования файлов в исходном местоположении, удаления любых пустых файлов и перемещения ненужных файлов в другое место.

Я хотел бы знать, нашел ли сообщество какой-либо обходной путь :)

1 Ответ

1 голос
/ 14 марта 2019

К сожалению, абстракция файловой системы, которую Athena использует для S3, не поддерживает это.Это требует, чтобы расположения таблиц выглядели как каталоги, и Афина добавит косую черту в конец расположения при перечислении файлов.

Существует способ создания таблиц, которые содержат только выборку файлов, но насколькоЯ знаю, что он не поддерживает подстановочные знаки, только явные списки файлов.

Что вы делаете, вы создаете таблицу с

STORED AS INPUTFORMAT 'org.apache.hadoop.hive.ql.io.SymlinkTextInputFormat'

и затем вместо указания LOCATION таблицык реальным файлам вы указываете на префикс с одним symlink.txt файлом (или указываете каждый раздел на префикс с одним symlink.txt).В файле symlink.txt вы добавляете S3 URI файлов для включения в таблицу, по одному на строку.

Единственная известная мне документация по этой функции - документация S3 Inventory для интеграциис Афиной .

Вы также можете найти полный пример в ответе Stackoverflow: https://stackoverflow.com/a/55069330/1109

...