Запрос по полю "$ path" - PullRequest
       12

Запрос по полю "$ path"

0 голосов
/ 22 апреля 2019

Я хочу сделать запрос по файлу / группе файлов в разделе внутри таблицы.Я обнаружил, что когда я использую поле «$ path», Афина сканирует весь раздел, а не нужные мне файлы

Есть ли способ сделать этот вид запроса более эффективным и сканировать только заданныйфайлы?Что-то вроде сокращения разделов для файлов ...

Вот пример запроса:

SELECT *
FROM my_table
WHERE day = '2019-01-01'
      AND "$path" = 's3://my-bucket/my-table/day=2019-01-01/my_file'

1 Ответ

0 голосов
/ 22 апреля 2019

Нет.Афина не может отсканировать только тот файл, который вам нужен, используя $path или любым другим известным мне способом, без разделения таблицы по-другому.

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

Если у вас несколько шаблонов доступа, а это не первичный,но все же не редкий шаблон, вы можете создать отдельную таблицу, используя формат ввода org.apache.hadoop.hive.ql.io.SymlinkTextInputFormat, и создать структуру разделов 1: 1 с файлами symlink.txt, указывающими на файлы исходной таблицы.Вы можете прочитать больше об этом способе создания таблиц в этом ответе StackOverflow (вторая половина) - но я думаю, что это будет очень сложный способ его решения.

...