Вопрос: Что такое Amazon Athena?

Amazon Athena – это интерактивный сервис запросов, позволяющий легко анализировать данные в хранилище Amazon S3 с помощью стандартных средств SQL. Athena – бессерверный сервис, здесь нет инфраструктуры, требующей настройки или управления, поэтому можно сразу же приступить к анализу данных. Поскольку сервис работает непосредственно с данными, хранящимися в S3, не придется даже загружать данные в Athena. Чтобы начать, просто войдите в Консоль управления Athena, задайте свою схему и приступайте к выполнению запросов. Сервис Amazon Athena использует Presto с полной поддержкой стандартных запросов SQL и работает с различными стандартными форматами данных, включая CSV, JSON, ORC и Apache Parquet и Avro. Amazon Athena идеально подходит для быстрой и спонтанной отправки запросов, легко интегрируется с Amazon QuickSight, обеспечивая удобную визуализацию, а также может выполнять сложные задачи анализа с использованием масштабных операций объединения, оконных функций и массивов.

Вопрос: Для чего предназначен сервис Amazon Athena?

Amazon Athena помогает анализировать данные, хранящиеся в Amazon S3. Athena можно использовать для выполнения спонтанных запросов с помощью ANSI SQL – без необходимости объединять данные или загружать их в Athena. Amazon Athena может обрабатывать неструктурированные, полуструктурированные и структурированные пакеты данных. В их число входят CSV, JSON, Avro или столбцовые форматы данных, такие как Apache Parquet и Apache ORC. Amazon Athena интегрируется с Amazon QuickSight, обеспечивая удобную визуализацию. Кроме того, Amazon Athena можно использовать для формирования отчетов либо просмотра данных с применением инструментов бизнес-аналитики или SQL-клиентов, подключенных с помощью драйвера JDBC.

Вопрос: Как начать работу с Amazon Athena?

Чтобы начать работу с Amazon Athena, просто войдите в Консоль управления AWS для Athena и создайте схему, указав в консоли операторы DDL либо воспользовавшись мастером создания таблиц. После этого вы сможете начать работу с запросами данных с помощью встроенного редактора запросов. Athena запрашивает данные непосредственно из хранилища Amazon S3, поэтому загружать их не требуется.  

Вопрос: Как получить доступ к Amazon Athena?

Доступ к Amazon Athena можно получить с помощью Консоли управления AWS, вызовов API и с использованием драйвера JDBC. Драйвер JDBC позволяет программно выполнять запросы, добавлять таблицы или разделы.

Вопрос: Какие ограничения связаны с работой сервиса Amazon Athena?

Чтобы больше узнать об ограничениях в работе сервиса, нажмите здесь.

Вопрос: На основе какой технологии работает сервис Amazon Athena?

Сервис Amazon Athena использует Presto с полной поддержкой стандартных запросов SQL и работает с различными стандартными форматами данных, включая CSV, JSON, ORC, Avro и Parquet. Athena может выполнять сложные задачи анализа с использованием масштабных операций объединения, оконных функций и массивов. В качестве основного хранилища данных Amazon Athena использует Amazon S3, что обеспечивает высокую доступность и надежность за счет избыточного хранения данных на нескольких объектах и нескольких устройствах в рамках каждого объекта.

Вопрос: Как Amazon Athena хранит определения таблиц и схемы?

Для хранения информации и схем баз данных и таблиц, хранящихся в Amazon S3, сервис Amazon Athena использует управляемый каталог данных. В тех регионах, где доступен сервис AWS Glue, можно настроить Amazon Athena на использование каталогов данных AWS Glue. В тех регионах, где сервис AWS Glue недоступен, Athena использует внутренний каталог.

Этот каталог можно изменить с помощью операторов DDL или через Консоль управления AWS. Все задаваемые схемы будут автоматически сохраняться до тех пор, пока вы их явно не удалите. В сервисе Athena применяется технология schema-on-read (схема при чтении), в рамках которой определения таблиц применяются к данным в хранилище S3 в процессе выполнения запросов. Выполнять загрузку или преобразование данных при этом не требуется. Определения таблиц и схемы можно удалять – это не окажет влияния на основные данные, хранящиеся в Amazon S3.

Вопрос: Почему рекомендуется перейти к использованию каталога данных AWS Glue?

AWS Glue – это полностью управляемый сервис извлечения, преобразования и загрузки данных (ETL). Он состоит из трех компонентов: 1) сканер, который автоматически обрабатывает источники данных, определяет их формат и выбирает схему для этих данных; 2) полностью управляемый сервис ETL, с помощью которого можно преобразовывать данные и перемещать их между источниками; 3) каталог данных, в котором хранятся метаданные о базах и таблицах, находящихся либо в S3, либо в другом хранилище, поддерживающем стандарт JDBC. Чтобы использовать все преимущества сервиса Glue, рекомендуется перейти с использования внутреннего каталога данных Athena к использованию каталога данных Glue.

Ниже перечислены преимущества такого перехода.

  1. Единый репозиторий метаданных. AWS Glue можно интегрировать с различными сервисами AWS. AWS Glue работает с данными, сохраненными в Amazon Aurora, Amazon RDS MySQL, Amazon RDS PostgreSQL, Amazon Redshift, Amazon S3, а также с базами данных MySQL и PostgreSQL в облаке Virtual Private Cloud (Amazon VPC), запущенном в Amazon EC2. AWS Glue обеспечивает встроенную интеграцию с Amazon Athena, Amazon EMR, Amazon Redshift Spectrum и любыми приложениями, совместимыми с Apache Hive Metastore.
  2. Автоматическое распознавание схем и разделов. AWS Glue автоматически сканирует источники данных, определяет формат данных, предлагает схему для них и варианты преобразования. Сканеры сервиса помогают автоматизировать создание таблиц и загрузку разделов.
  3. Простое создание конвейеров. Механизм ETL в AWS Glue создает код на языке Python, который можно править на свое усмотрение и использовать повторно, независимо от сервиса. Этот код можно редактировать в привычной среде IDE или любом редакторе, а также публиковать на GitHub для доступа других пользователей. После создания задания ETL можно запланировать его запуск в полностью управляемой, масштабируемой инфраструктуре Spark сервиса AWS Glue. AWS Glue является бессерверным сервисом, поэтому он управляет выделением, настройкой и масштабированием ресурсов, необходимых для запуска заданий ETL, и позволяет надежно интегрировать ETL в рабочий процесс.

Дополнительную информацию о каталоге данных Glue см. по ссылке.

Вопрос: Есть ли пошаговое руководство по переходу на каталог данных AWS?

Да. Пошаговое руководство можно найти здесь.

Вопрос: В каких регионах доступен сервис Amazon Athena?

Дополнительную информацию о доступности сервиса Amazon Athena по регионам см. в таблице Продукты и сервисы по регионам.

Вопрос: Чем отличаются сервисы Amazon Athena, Amazon EMR и Amazon Redshift?

Сервисы запросов, подобные Amazon Athena, хранилища данных, такие как Amazon Redshift, и среды для комплексной обработки данных, аналогичные Amazon EMR, призваны решать различные задачи в разных примерах использования. Вам нужно просто выбрать подходящий инструмент для работы. Amazon Redshift обеспечивает высочайшую скорость выполнения запросов для корпоративной отчетности и бизнес-аналитики, в том числе благодаря сложноорганизованным запросам SQL с многочисленными объединениями и подзапросами. Amazon EMR упрощает эксплуатацию и снижает ее стоимость для высокораспределенных сред обработки, таких как Hadoop, Spark и Presto, по сравнению с развертыванием в локальной среде. Amazon EMR отличается высокой гибкостью, позволяя выполнять пользовательские приложения и код, а также задавать особые параметры для вычислений, памяти, хранилища и приложений с целью оптимизации аналитических требований. Сервис Amazon Athena – это самый простой способ выполнения спонтанных запросов, обращенных к данным в хранилище S3. Он не требует настройки или управления серверами.

Вопрос: Когда стоит использовать полнофункциональное хранилище данных, подобное Amazon Redshift, а когда – сервис запросов, такой как Amazon Athena?

Хранилище данных, такое как Amazon Redshift, идеально подходит в тех случаях, когда данные из множества различных источников – например, систем управления запасами, финансовых систем и систем розничной торговли – нужно привести к единому формату и хранить в течение долгого времени для создания комплексных бизнес-отчетов на основании сведений за прошлые периоды.

Хранилища данных собирают данные по компании и выступают в качестве «единого источника достоверной информации» для составления отчетов и проведения анализа. Они извлекают данные из многочисленных источников, форматируют, упорядочивают и хранят их, а также поддерживают комплексные высокоскоростные запросы для формирования бизнес-отчетности. Движок запросов в сервисе Amazon Redshift специально оптимизирован для работы в рамках подобного примера использования, когда необходимо выполнять комплексные запросы, объединяющие множество очень крупных таблиц баз данных. TPC-DS – это стандартный инструмент сравнительного тестирования, предназначенный для воспроизведения подобного примера использования. Redshift способен выполнять такие запросы в 20 раз быстрее по сравнению с сервисами запросов, оптимизированными для работы с неструктурированными данными. В тех случаях, когда необходимо выполнить запросы к высокоструктурированным данным с большим количеством объединений в многочисленных очень крупных таблицах, следует использовать сервис Amazon Redshift.

В свою очередь, сервисы запросов, подобные Amazon Athena, позволяют легко выполнять интерактивные запросы к данным непосредственно в Amazon S3. При этом не нужно беспокоиться о форматировании данных или управлении инфраструктурой. Например, сервис Athena отлично подойдет, если вам необходимо сделать быстрый запрос к журналам веб-сервера для устранения проблем, связанных с производительностью сайта. Сервисы запросов позволяют оперативно приступить к работе. Вам нужно просто задать таблицу для данных и начать работу с запросами с помощью стандартного языка SQL.

Можно использовать сразу оба сервиса. Если перед загрузкой в Amazon Redshift вы размещаете данные в хранилище Amazon S3, то эти данные также смогут регистрироваться и запрашиваться сервисом Amazon Athena.

Вопрос: В каких случаях лучше использовать Amazon EMR, а в каких – Amazon Athena?

Сервис Amazon EMR способен не только выполнять запросы SQL. Он позволяет осуществлять широкий спектр операций по обработке масштабных данных в таких областях применения, как машинное обучение, анализ графов, преобразование и потоковая передача данных, а также решать практически любые задачи, связанные с написанием кода. Amazon EMR будет полезен, если вы применяете пользовательский код для обработки и анализа особо крупных наборов данных с помощью новейших сред обработки больших данных, таких как Spark, Hadoop, Presto или Hbase. Amazon EMR гарантирует полный контроль над конфигурированием кластеров, а также над установленным на них программным обеспечением.

Amazon Athena стоит использовать в том случае, если вы хотите выполнять интерактивные спонтанные запросы SQL, обращенные к данным в хранилище Amazon S3, не управляя при этом инфраструктурой или кластерами.

Вопрос: Можно ли использовать сервис Amazon Athena для запроса данных, которые обрабатываются в Amazon EMR?

Да, Amazon Athena поддерживает множество тех же форматов данных, что и Amazon EMR. Каталог данных Athena совместим с метахранилищем Hive. Если вы используете сервис EMR и у вас уже есть метахранилище Hive, вы можете просто выполнить операторы DDL в Amazon Athena, а затем начать работу с запросами, обращенными к своим данным, – без какого-либо воздействия на задачи Amazon EMR.

Вопрос: Как создаются таблицы и схемы для данных в хранилище Amazon S3?

Для определения таблиц сервис Amazon Athena использует операторы DDL Apache Hive. Операторы DDL можно выполнять в консоли Athena, через API, а также с помощью драйвера JDBC или мастера создания таблиц Athena. При использовании каталога данных AWS Glue в Athena можно также использовать сканеры Glue для определения схем и разделов. Сканер AWS Glue подключается к хранилищу данных, перемещается по приоритезированному списку классификаторов, чтобы определить схему и другие статистические данные, а затем сохраняет полученные метаданные в каталоге данных Glue. Сканеры можно запускать периодически, чтобы определять появление новых данных или изменения в существующих данных, включая изменения в определениях таблиц. Сканеры AWS Glue добавляют новые таблицы, новые разделы к существующим таблицам и новые версии определений таблиц. Сканеры можно настраивать так, чтобы они обрабатывали пользовательские типы файлов.

Когда в Amazon Athena создается новая схема таблицы, она сохраняется в каталоге данных и используется при выполнении запросов, но не изменяет данные, хранящиеся в S3. В сервисе Athena применяется подход, известный как schema-on-read (схема при чтении), который позволяет проецировать схему на данные в момент выполнения запроса. Это устраняет необходимость в загрузке или преобразовании данных. Подробнее о создании таблиц.

Вопрос: Какие форматы данных поддерживает сервис Amazon Athena?

Amazon Athena поддерживает широкий спектр форматов, таких как CSV, TSV, JSON или текстовые файлы, а также столбцовые форматы данных с открытым исходным кодом – например, Apache ORC и Apache Parquet. Кроме того, Athena поддерживает сжатые данные в форматах Snappy, Zlib, LZO и GZIP. Сжатие, разбиение на разделы и применение столбцовых форматов данных позволяют повысить производительность и сократить затраты.

Вопрос: Какие типы данных поддерживает сервис Amazon Athena?

Amazon Athena поддерживает как простые типы данных, включая INTEGER, DOUBLE и VARCHAR, так и комплексные, подобные MAPS, ARRAY и STRUCT.  

Вопрос: Можно ли запускать в сервисе Athena запросы Hive?

Amazon Athena использует Hive только для операторов DDL (Data Definition Language) и для создания/изменения и удаления таблиц и/или разделов. Нажмите здесь, чтобы просмотреть полный список поддерживаемых операторов. При запуске запросов SQL, обращенных к Amazon S3, Athena использует Presto. Для запроса данных в Amazon S3 можно выполнить ANSI-совместимые операторы SQL SELECT.

Вопрос: Что такое SerDe?

SerDe, сокращение от Serializer/Deserializer («параллельно-последовательный/последовательно-параллельный преобразователь»), – это библиотеки, которые сообщают Hive, как следует интерпретировать форматы данных. Операторы DLL Hive требуют задать SerDe, чтобы система знала, как интерпретировать указанные для нее данные. Amazon Athena использует SerDe для интерпретации данных, считываемых из хранилища Amazon S3. Концепция SerDe, которая используется в Athena, аналогична концепции в Hive. Amazon Athena поддерживает следующие SerDe:

  1. Журналы веб-сервера Apache: org.apache.hadoop.hive.serde2.RegexSerDe
  2. CSV: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
  3. TSV: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
  4. Пользовательские разделители: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
  5. Parquet: org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe
  6. Orc: org.apache.hadoop.hive.ql.io.orc.OrcSerde
  7. JSON: org.apache.hive.hcatalog.data.JsonSerDe ИЛИ org.openx.data.jsonserde.JsonSerDe

Вопрос: Можно ли добавлять собственные SerDe в Amazon Athena?

В настоящее время добавление собственных SerDe в Amazon Athena не предусмотрено. Мы высоко ценим обратную связь, которую вы предоставляете. Если вы хотите добавить какие-либо SerDe в сервис, обратитесь к команде разработчиков Athena по адресу: Athena-feedback@amazon.com

Вопрос: У меня есть файлы Parquet/ORC, созданные с помощью Spark/Hive. Можно ли направлять к ним запросы через Athena?

Да, файлы Parquet и ORC, созданные в Spark, можно считывать с помощью сервиса Athena.

Вопрос: Ко мне поступают данные из сервиса Kinesis Firehose. Как направить к ним запрос с помощью Athena?

Если данные Kinesis Firehose хранятся в Amazon S3, вы можете направлять к ним запросы с помощью Amazon Athena. Просто создайте схему для своих данных в Athena и начните работу с запросами. В целях оптимизации производительности рекомендуется упорядочить данные по разделам. Чтобы добавить разделы, созданные с помощью Kinesis Firehose, можно воспользоваться операторами DDL ALTER TABLE. Подробнее о разделах.

Вопрос: Поддерживает ли Amazon Athena разбиение данных на разделы?

Да. Amazon Athena позволяет разбивать данные на разделы в любом столбце. Разделы дают возможность ограничить объем данных, обрабатываемых при каждом запросе, что приводит к сокращению затрат и повышению производительности. Указать схему разбиения на разделы можно с помощью условия PARTITIONED BY в операторе CREATE TABLE. Подробнее о разбиении данных на разделы.

Вопрос: Как добавить новые данные в существующую таблицу в Amazon Athena?

Если данные разбиты на разделы, то, после того как новые данные станут доступны в Amazon S3, нужно будет выполнить запрос метаданных (ALTER TABLE ADD PARTITION) – это позволит добавить раздел в Athena. Если данные не разбиты на разделы, то при добавлении новых данных (или файлов) в существующий префикс они будут автоматически добавлены в Athena. Подробнее о разбиении данных на разделы.

Вопрос: У меня в Amazon S3 уже хранятся большие объемы данных журналов. Можно ли использовать Amazon Athena для выполнения запроса к ним?

Да, Amazon Athena позволяет легко выполнять стандартные запросы SQL, обращенные к существующим данным журнала. Athena запрашивает данные непосредственно из Amazon S3, поэтому перемещать или загружать их не требуется. Просто задайте собственную схему с помощью операторов DDL и сразу же начинайте работу с запросами к своим данным.

Вопрос: Какие типы запросов поддерживает Amazon Athena?

Amazon Athena поддерживает запросы ANSI SQL. Amazon Athena использует Presto, работающий в памяти распределенный движок запросов SQL с открытым исходным кодом, и может выполнять сложные задачи анализа с использованием масштабных операций объединения, оконных функций и массивов.

Вопрос: Можно ли использовать Amazon QuickSight с сервисом Amazon Athena?

Да. Amazon Athena интегрируется с Amazon QuickSight, позволяя легко визуализировать данные, хранящиеся в Amazon S3.

Вопрос: Поддерживает ли Athena другие инструменты бизнес-аналитики и SQL-клиенты?

Да. Amazon Athena поставляется с драйвером JDBC, который можно использовать с другими инструментами бизнес-аналитики и SQL-клиентами. Подробнее об использовании драйвера JDBC с сервисом Athena.

Вопрос: Поддерживает ли Athena пользовательские функции (UDF)?

В настоящее время Athena не поддерживает заданные пользователем UDF. Если вам необходима поддержка заданных пользователем UDF, обратитесь к нам по адресу athena-feedback@amazon.com, чтобы мы могли ознакомиться с вашими требованиями.

Вопрос: Как получить доступ к функциям, которые поддерживает сервис Amazon Athena?

Нажмите здесь, чтобы больше узнать о функциях, поддерживаемых Amazon Athena.

Вопрос: Как повысить производительность запроса?

Производительность запроса можно повысить с помощью сжатия, разбиения на разделы или преобразования данных в столбцовые форматы. Amazon Athena поддерживает столбцовые форматы данных с открытым исходным кодом, такие как Apache Parquet и Apache ORC. Преобразование данных в сжатый столбцовый формат позволяет сократить затраты и повысить производительность запросов, поскольку при выполнении запроса Athena будет обрабатывать меньше данных из S3.

Вопрос: Как управлять доступом к своим данным?

Amazon Athena позволяет управлять доступом к данным с помощью политик AWS Identity and Access Management (IAM), списков контроля доступа (ACL) и политик управления корзинами Amazon S3. Благодаря политикам IAM вы сможете предоставлять пользователям IAM средства точного управления корзинами S3. Контролируя доступ к данным в S3, можно запретить пользователям отправлять запросы к этому хранилищу через Athena.

Может ли Athena выполнять запросы к зашифрованным данным в Amazon S3?

Да. Сервис поддерживает запросы к данным, которые зашифрованы на стороне сервера с помощью ключей, управляемых Amazon S3; к данным, которые зашифрованы на стороне сервера с помощью ключей, управляемых AWS Key Management Service (KMS); а также к данным, которые зашифрованы на стороне клиента с помощью ключей, управляемых KMS. Кроме того, Amazon Athena интегрирован с KMS и предоставляет возможность шифрования наборов данных, полученных в ответ на запрос.

Вопрос: Обеспечивает ли Athena высокую доступность данных?

Да. Amazon Athena обеспечивает высокую доступность, выполняя запросы с помощью вычислительных ресурсов, распределенных между несколькими объектами, и автоматически маршрутизируя запросы в случае недоступности определенных объектов. В качестве основного хранилища Athena использует Amazon S3, что гарантирует высокую доступность и надежность данных. Устойчивая инфраструктура Amazon S3 обеспечивает надежное хранение 99,999999999 % объектов. Резервные копии данных распределяются между несколькими объектами и несколькими устройствами на каждом объекте.

Вопрос: Можно ли предоставить доступ к корзине S3, принадлежащей стороннему лицу, для пользователей других аккаунтов?

Да, вы можете предоставлять доступ к хранилищу Amazon S3 для пользователей других аккаунтов.

Вопрос: Сколько стоит использование сервиса Athena?

Плата за сервис Amazon Athena взимается за каждый запрос и зависит от объема данных, обработанных при этом запросе. Данные в Amazon S3 могут храниться в различных форматах. Если вы сожмете данные, разобьете их на разделы или преобразуете в столбцовые форматы, плата снизится, поскольку вы будете обрабатывать меньше данных. Преобразование данных в столбцовый формат позволит Athena при обработке запроса считывать только необходимые столбцы. Дополнительную информацию см. на странице цен сервиса Athena.

Вопрос: Почему при использовании столбцового формата плата снижается?

Плата за Amazon Athena зависит от объема данных, обработанных при запросе. Благодаря сжатию Amazon Athena обрабатывает меньший объем данных. Преобразование данных в столбцовые форматы позволяет Athena при обработке данных выборочно считывать только необходимые столбцы. Разбиение данных на разделы также приводит к уменьшению объема данных, обрабатываемых Athena. Все это обеспечивает сокращение затрат и повышение производительности. Подробнее см. в примере цен.

Вопрос: Каким образом можно сократить затраты?

Сжатие, разбиение на разделы и преобразование данных в столбцовые форматы позволяют сэкономить от 30 до 90 % стоимости запроса и повысить производительность. Каждая из этих операций приводит к уменьшению количества данных, необходимых Amazon Athena для обработки при выполнении запроса. Amazon Athena поддерживает два из наиболее популярных столбцовых форматов с открытым исходным кодом: Apache Parquet и ORC. Объем данных, обработанных при запросе, отображается в консоли Athena.  

Вопрос: Взимается ли плата за неудачные запросы в Amazon Athena?

Нет, плата за неудачные запросы не взимается.

Вопрос: Взимается ли плата за отмененные запросы в Amazon Athena?

Да, если вы отмените запрос вручную, будет удержана плата за количество данных, обработанных сервисом до момента отмены запроса.

Вопрос: Взимаются ли какие-то дополнительные платежи за пользование Amazon Athena?

Amazon Athena запрашивает данные непосредственно из хранилища Amazon S3, поэтому исходные данные оплачиваются по ставкам S3. При выполнении запроса Amazon Athena по вашему усмотрению сохраняет результаты в корзине S3, и за эти наборы результатов с вас взимаются стандартные ставки S3. Для управления объемом удержания данных рекомендуется проводить мониторинг этих корзин и использовать политики жизненного цикла.

Вопрос: Будет ли взиматься плата за использование каталога данных AWS Glue?

Да. За использование каталога данных AWS Glue взимается отдельная плата. Подробнее о ценах на каталог данных Glue см. по ссылке.