#amazon-web-services #amazon-s3 #amazon-athena #pyathena
Вопрос:
Есть ли способ сохранить порядок по запросу от Афины? Предположим, что данные в корзине s3 или в озере данных разделены и находятся в файлах parquet. Каждый раз, когда я что-то запрашиваю, порядок каждый раз меняется. Я не уверен, как работает Athena, но имеет смысл, чтобы несколько сотрудников выполняли запрос для повышения производительности и просто объединяли результаты вместе, что будет иметь смысл, почему порядок каждый раз разный. Но можно ли сохранить порядок результатов, если все данные поступают только из одного файла parquet?
Комментарии:
1. можете ли вы попробовать, установив parquet.column.index.access в значение true в свойствах serde, как указано в docs.aws.amazon.com/athena/latest/ug/… ?
2. Зачем вам понадобилось сохранять порядок?
3. Это просто требование. Допустим, данные разбиты на разделы, и один файл паркета уже отсортирован (по времени). Если я хочу выбрать все данные из этого единственного паркетного файла, они уже отсортированы, поэтому я не хочу ВЫБИРАТЬ все, тогда все равно придется сортировать/упорядочивать по времени (что может быть дорого).
Ответ №1:
Если данные в ваших исходных файлах уже отсортированы по времени, добавление an order by time_column
не добавит сложности запросу. Концептуально каждый работник будет сортировать небольшую часть данных, а затем объединять результаты сортировки от работников. Для данных, которые уже отсортированы, это недорогие операции.