Является ли разделение полезным в Amazon Athena, если запрос не фильтруется по разделу? - PullRequest
0 голосов
/ 16 апреля 2019

У меня большой объем данных, но нет конкретного столбца, по которому я хотел бы отфильтровать данные (т. Е. Моим предложением where может быть любой столбец). В этом сценарии, обеспечивает ли разбиение какую-либо выгоду (может, помогает с параллелизмом чтения?), Когда запросы в конечном итоге сканируют все данные?

1 Ответ

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

Если столбца не будет, или все или большинство запросов будут фильтроваться, то разделы будут только снижать производительность.Вместо этого нацеливайтесь на файлы размером около 100 МБ, как можно меньше, паркетируйте, если это возможно, и помещайте все файлы прямо под LOCATION.

. Причина, по которой разделы снижают производительность, заключается в том, что когда Athena начинает выполнять ваш запросон перечислит все файлы, и то, как он это делает, выглядит так, как если бы S3 была файловой системой.Он начинается с перечисления таблицы LOCATION, и если он находит что-то похожее на каталог, он перечисляет его отдельно и так далее, рекурсивно.Если у вас есть глубокая структура каталогов, это может занять много времени.Вы хотите помочь Athena, имея все свои файлы в плоской структуре, но также и менее 1000 из них, потому что это размер страницы для операции со списком S3.Имея более 1000 файлов, вы хотите иметь каталоги, чтобы Афина могла распараллеливать листинг (но как можно меньше, потому что существует ограничение на количество листингов, которые он будет выполнять параллельно).

Вы хотите сохранитьРазмер файла составляет около 100 МБ, потому что это хороший размер, который обменивает время, необходимое для обработки файла, на издержки, связанные с его получением из S3. Точная рекомендация составляет 128 МБ .

...