ORC Format сканирует все таблицы в каждом запросе
Я создал свой первый стол орков в Афине.
CREATE EXTERNAL TABLE `orc_test`(
`hexid` string,
`version` int,
`ts` int,
`campaignid` int,
`sourceuid` string,
`publisherid` string,
`adslot` string,
`share` double,
`earn` double,
`spent` double,
`rebate` double,
`payout` double,
`cost` double,
`ip` string,
`useragent` string,
`referer` string,
`param1` string,
`param2` string,
`param3` string,
`param4` string,
`param5` string,
`param6` string,
`appid` string,
`bundleid` string,
`deviceid` string,
`uuid` string,
`callbackurl` string)
PARTITIONED BY (
`year` string,
`month` string,
`day` string,
`hour` string,
`minute` string)
STORED AS orc
LOCATION
‘s3://someplace/orc_2’
TBLPROPERTIES (‘orc.compress’=‘SNAPPY’)
Когда я делаю запрос в поисках конкретных данных (например, hexid). Запрос сканирует всю таблицу. Будучи столбчатой таблицей, не будет ли она выполнять поиск только по столбцу hexId без сканирования всей таблицы?
Я думаю, что я что-то упустил.
Спасибо!
pd: извините за мой английский!
1 ответ
Я полагаю, что вы уменьшите количество отсканированных данных только тогда, когда будете использовать столбцы разделов в предложении WHERE, чтобы Афина могла определить подмножество разделов для сканирования. В определении вашей таблицы hexid не является полем раздела, поэтому Афина должна отсканировать весь набор данных, чтобы определить строки.
См. Разделение данных в Документах Athena для получения дополнительной информации.
Пожалуйста, взгляните на этот пост: https://forums.aws.amazon.com/message.jspa?messageID=841338 Кажется, что доступность чтения столбцов зависит от размера полосы ORC. По умолчанию в Presto установлено значение 8 МБ (а Athena использует Presto), ваш файл ORC должен содержать полосы размером более 8 МБ. Ниже этого предела будет прочитан весь файл.
AWS Athena не имеет этой проблемы с файлами Parquet. Однако будьте осторожны со сложными типами данных паркета:
"Когда вы запрашиваете столбцы со сложными типами данных (массив, карта, структура) и используете Parquet для хранения данных, Athena в настоящее время читает всю строку данных, а не выборочно читает только указанные столбцы, как ожидалось. Это известная проблема.. "(все ограничения: https://docs.aws.amazon.com/athena/latest/ug/other-notable-limitations.html)