У меня довольно сложные вложенные журналы JSON.Я хотел бы создать внешнюю таблицу Athena на основе этих журналов, но использовать только НЕКОТОРЫЕ поля JSON в таблице.
У меня есть два вопроса:
- Я все ещеНужно ли создавать полный сложный DDL с вложенными структурами, хотя мне не нужно большинство полей там?
- при условии, что я могу это сделать, и я сохраняю журналы JSON в формате Parquet на S3 - будет сканировать Афинатолько те части / поля логов я указываю?Или он все равно будет выполнять полное сканирование по полной цене?:-)
упрощенный пример события JSON:
{
"name": "n1",
"f1": "v1",
"group1": {
"g1F1": "v1",
"g1F2": "v2",
"group11": {
"g11F1": "v1",
"g11F2": "v2"
},
"group12": {
"g12F1": "v1",
"g12F2": "v2"
}
},
"group2": {
"g2F1": "v1",
"g2F2": "v2",
...
},
...
}
Допустим, меня интересуют только поля верхнего уровня "name", "f1" и некоторые вложенные поля, скажем, поля "group2" "g2F1" и "g2F2".Могу ли я сделать что-то вроде этого:
CREATE EXTERNAL TABLE mytable (
name string,
f1 string,
group2 struct<g2F1: string, g2F2: string>
)
ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe'
LOCATION 's3://<mybucket>'
?
Когда я пробую этот подход - DDL запускается без ошибок, таблица создается, но «select * from mytable» не возвращает результатов ...
Спасибо !!
Обновление:
Решение для вопроса / проблемы 1: Не знаю почему, но как только я снова загрузил gzipped журналы в S3 - создание таблицы и запросы начали работать!
По Вопросу 2 - см. Ответ Танвера ниже.
Обновление 2:
Для тех, кто также рассматривает этот вариант: я получил таблицу Athena, созданную с примерно 6Gсжатых данных - все хорошо.Однако время выполнения запроса чрезвычайно велико.Простой запрос с фильтром по нескольким полям занимает около 25-30 минут .... Учитывая, что это всего лишь POC, использующий 6G, и у меня было бы несколько сотен Ts по-настоящему - этот вариант не выполним для моеговариант использования.Конечно, я не использовал формат Parquet - но поскольку мне часто требовалось большинство столбцов, я не думаю, что использование Parquet значительно улучшило бы производительность запросов для меня.