Amazon Athena のよくある質問

全般

Athena は、Amazon Simple Storage Service (S3) 内のデータを SQL でシンプルに分析できるインタラクティブな分析サービスです。Athena はサーバーレスです。そのため、セットアップや管理のためのインフラストラクチャがなく、即座にデータ分析を開始できます。データを Athena にロードする必要もありません。Amazon S3 に保存されているデータと直接連係します。Amazon Athena for SQL では、標準 SQL をフルサポートした Trino と Presto を使用し、CSV、JSON、Apache ORC、Apache Parquet、Apache Avro を含むさまざまな標準データ形式で機能します。Athena for Apache Spark は SQL をサポートするとともに、ビッグデータワークロードに使用されるオープンソースの分散処理システムである Apache Spark を使用することを可能にします。始めるには、Athena Management Console にログインし、クエリエディタまたはノートブックを使用してデータとのやり取りを開始します。

Athena では、S3 に保存されたデータと、オンプレミスのデータソースや他のクラウドシステムを含む 30 種類のデータソースを分析することができます。Athena では、Athena にデータの集約やロードをしなくても、ANSI SQL または Python を使用してインタラクティブな分析を実行できます。Athena では、非構造化、半構造化、構造化データセットを処理できます。例えば、CSV、JSON、Avro、または Parquet や ORC のような列指向データ形式が含まれます。Amazon Athena for SQL は Amazon QuickSight と統合されており、データを可視化したりダッシュボードを作成したりすることができます。また、Athena では、ODBC ドライバーや JDBC ドライバーで接続して、ビジネスインテリジェンスツールや SQL クライアントを使ったレポートの生成やデータの調査を行えます。 

Athena の使用を開始するには、Athena の AWS マネジメントコンソールにログインして、コンソールに Data Definition Language (DDL) ステートメントを記述するか、テーブル作成ウィザードを使用してスキーマを作成します。その後、組み込みのクエリエディタを使用して、データのクエリを開始できます。Athena では、S3 から直接データがクエリされるため、ロードは必要ありません。

Amazon Athena for SQL

AWS マネジメントコンソール、AWS SDK、CLI、または Athena の ODBC ドライバーや JDBC ドライバーを介して Amazon Athena for SQL にアクセスできます。ODBC ドライバーや JDBC ドライバーを使用して、クエリの実行、テーブルやパーティションの追加をプログラムで実行できます。

Athena for SQL では、標準 SQL をフルサポートした Trino を使用し、CSV、JSON、ORC、Avro、Parquet を含むさまざまな標準データ形式で機能します。Athena では大規模な結合、ウィンドウ関数、配列などの複雑な分析を処理できます。Trino をベースにした Amazon Athena SQL エンジンバージョン 3 では、Presto をベースにした Amazon Athena エンジンバージョン 2 でのアプローチと同様に、パフォーマンスの向上と新機能の提供を継続して行っています。v3 の最もエキサイティングな点の1つは、オープンソースソフトウェア管理に対する新しい継続的インテグレーションアプローチで、これによりお客様は Trino と PrestoDB プロジェクトを常に最新の状態に保つことができます。オープンソースのトリノ発売から 60 日〜 90 日以内に残ることを目標にしています。Athena 開発チームは、これらのオープンソースのコードベースに、バグフィックスやセキュリティ、スケーラビリティ、パフォーマンス、機能の強化などを積極的に提供しています。したがって、TrinoPrestoApache Iceberg を使用している人は、チームの貢献から利益を得ることができます。

Athena for SQL では、マネージド型の AWS Glue データカタログを使用して、S3 の保存データ用に作成したデータベースとテーブルに関する情報やスキーマを保存します。AWS Glue が利用可能なリージョンでは、アップグレードにより Athena で データカタログを使用できます。AWS Glue が提供されていないリージョンでは、Athena で内部カタログが使用されます。

 

このカタログは、DDL ステートメントを使用するか、AWS マネジメントコンソールから修正できます。定義したスキーマは、明示的に削除しない限り、自動的に保存されます。Athena では、schema-on-read 技術を使用しているため、クエリ実行時に S3 のデータに適用されたテーブル定義が適用されます。データのロードや変換は必要ありません。テーブル定義やスキーマは、S3 に保存されている基礎データに影響を与えることなく削除できます。

AWS Glue は、抽出、変換、ロード (ETL) のフルマネージドサービスです。AWS Glue には、次の 3 つの主要コンポーネントがあります: (1) データソースを自動的にスキャンし、データ形式を特定して、スキーマを推論するクローラー、(2) データを変換し、さまざまな宛先にデータを移動することを許可するフルマネージド ETL サービス、(3) S3、または ODBC もしくは JDBC に準拠したデータストアのいずれかに保存されているデータベースとテーブルに関するメタデータ情報を保存する Data Catalog。AWS Glue の利点を活用するには、Athena が使用する内部データカタログを Glue データカタログにアップグレードする必要があります。

データカタログへのアップグレードの利点は以下の通りです。

  • メタデータの統合リポジトリ: AWS Glue は AWS の様々なサービスと統合されています。AWS Glue は、Amazon Aurora、Amazon Relational Database Service (RDS) for MySQL、Amazon RDS for PostgreSQL、Amazon Redshift、S3、および Amazon Elastic Compute Cloud (EC2) で稼働する Amazon 仮想プライベートクラウド (VPC) の MySQL と PostgreSQL データベースに保存されているデータをサポートします。AWS Glue は、Athena、Amazon EMR、Amazon Redshift Spectrum、および Apache Hive メタストアと互換性のあるアプリケーションと、すぐに統合することができます。
  • スキーマとパーティションの自動認識: AWS Glue ではデータソースを自動的にクロールし、データフォーマットを識別してスキーマと変換を提案します。クローラーはテーブル作成の自動化とパーティションの自動ロードに役立ちます。

Data Catalog の詳細については、AWS Glue のウェブページを確認してください。

はい。ステップバイステップのプロセスについては、「Amazon Athena ユーザーガイド」の「AWS Glue との統合」を参照してください。

リージョン別の Athena サービスの可用性の詳細については、AWS リージョン別サービスリストを参照してください。

サービス制限の詳細については、Amazon Athena ユーザーガイド: Service Quotas をご覧ください。

テーブル、データ形式およびパーティションの作成

Athena では Apache Hive DDL を使用してテーブルを定義します。DDL ステートメントは、Athena コンソール、ODBC ドライバー、JDBC ドライバーを使用して、API を介して、または Athena テーブル作成ウィザードを使用して実行できます。Athena で データカタログを使用している場合、AWS Glue クローラーにより自動的にスキーマとパーティションを推論することもできます。AWS Glue クローラーはデータストアに接続すると、分類子の順位リストに従ってデータからスキーマやその他の情報を抽出し、得られたメタデータをデータカタログに入力します。クローラーは定期的に実行され、新しいデータの追加、既存データの変更、テーブル定義の変更が検知されます。クローラーにより、新しいテーブル、既存テーブルの新しいパーティション、テーブル定義の新しいバージョンが自動的に追加されます。AWS Glue クローラーは、独自のファイル形式を分類できるようにカスタマイズできます。 

Athena で新しいテーブルスキーマを作成すると、スキーマがデータカタログに保存され、クエリを実行するときに使用されますが、S3 内のデータは変更されません。Athena では、schema-on-read と呼ばれるアプローチを使用します。このため、クエリの実行時にデータ上にスキーマを射影できます。これにより、データのロードや変換の必要性が減少します。テーブルの作成の詳細をご覧ください。 

Athena は CSV、TSV、JSON、Textfiles などの様々なデータ形式をサポートし、ORCや Parquet などのオープンソース列指向形式もサポートします。Athena では、Snappy 形式、Zlib 形式、LZO 形式、GZIP 形式での圧縮データもサポートされています。圧縮、パーティション化、列指向形式の使用により、パフォーマンスを向上し、コストを削減できます。 

Athena は、INTEGER、DOUBLE、VARCHAR などのシンプルなデータ型と MAPS、ARRAY、STRUCT などの複雑なデータ型の両方がサポートされています。  

Athena は DDL とテーブルまたはパーティションの作成/変更および削除のためにのみ Hive を使用します。サポートされているステートメントの詳細なリストについては、「Amazon Athena ユーザーガイド」の「DDL ステートメント」をご覧ください。S3 で SQL クエリを実行する場合、Athena では Trino と Presto が使用されます。S3 のデータをクエリする場合、ANSI 準拠 SQL SELECT ステートメントを実行できます。

SerDe は、シリアライザー/デシリアライザーの略称です。Hive にデータ形式の解釈方法を指定するライブラリです。Hive DDL ステートメントでは SerDe を指定する必要があるため、指定されているデータの解釈方法がシステムで把握されます。Athena では SerDes を使用して、S3 から読み込んだデータを解釈します。Athena での SerDes の概念は、Hive で使用されている概念と同じです。Amazon Athena では、以下の SerDes をサポートしています。

  • Apache ウェブログ: "org.apache.hadoop.hive.serde2.RegexSerDe"
  • CSV: "org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe"
  • TSV: "org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe"
  • カスタム区切り文字: "org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe"
  • Parquet: "org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe"
  • Orc: "org.apache.hadoop.hive.ql.io.orc.OrcSerde"
  • JSON:「org.apache.hive.hcatalog.data.JsonSerDe」または「org.openx.data.jsonserde.JsonSerDe」

現在、独自の SerDe を Athena に追加できません。フィードバックをお寄せください。追加された SerDes を確認したい場合は、Athena チーム (athena-feedback@amazon.com) にお問い合わせください。

はい。Spark を使用して作成した Parquet ファイルや ORC ファイルは、Athena で読み込むことができます。

Kinesis Data Firehose データが S3 に保存されている場合は、Athena を使用してクエリを実行できます。Athena でデータのスキーマを作成し、クエリを開始します。パフォーマンスを向上させるため、データをパーティションにまとめることをお勧めします。ALTER TABLE DDL ステートメントを使用して、Data Firehose で作成したパーティションを追加できます。データのパーティション化の詳細をご覧ください。 

はい。Athena で任意のカラムでデータをパーティショニングすることができます。パーティションにより、各クエリスキャンのデータ量を制限できます。これにより、コストを節約し、パフォーマンスを向上できます。CREATE TABLE ステートメントで PARTITIONED BY 節を使用して、パーティションスキームを指定できます。 Amazon Athena が、クエリプランニングを最適化し、クエリの実行時間を短縮するために、AWS Glue データカタログのパーティションインデックスをサポートします。多数のパーティションを含むテーブルをクエリすると、Athena は AWS Glue データカタログから使用可能なパーティションを取得し、クエリに必要なパーティションを特定します。新しいパーティションが追加されると、パーティションの取得に必要な時間が長くなり、クエリの実行時間が長くなる可能性があります。AWS Glue データカタログを利用すると、お客様はパーティションインデックスを作成して、数万から数十万のパーティションを持つテーブルのパーティションメタデータを取得およびフィルタリングするために必要な時間を短縮できます。

データが分割されている場合は、新しいデータが S3 で使用可能になった後、メタデータクエリ (ALTER TABLE ADD PARTITION) を実行して Athena にパーティションを追加する必要があります。データが分割されていない場合は、新しいデータ (またはファイル) を既存のプレフィックスに追加すると、データが自動的に Athena に追加されます。データのパーティション化の詳細をご覧ください。

はい、Athena は既存のログデータに対する標準的な SQL クエリの実行を合理化します。Athena では、S3 から直接データをクエリするため、データの移動やロードは必要ありません。DDL ステートメントを使用してスキーマを定義し、即座にデータのクエリを開始できます。

クエリ、データ形式、マルチクラウド

Athena では、ANSI SQL クエリがサポートされています。Athena では、オープンソースでインメモリの分散型 SQL エンジンである Trino が使用されているため、大規模な結合、ウィンドウ関数、配列を含む複雑な分析を処理できます。

はい。Athena は QuickSight と統合しているので、S3 に保存されているデータをシームレスに可視化することができます。 

はい。Athena には、他の BI ツールや SQL クライアントで使用できる ODBC ドライバーや JDBC ドライバーが付属しています。Athena の ODBCドライバーや JDBC ドライバーの使用の詳細をご覧ください。 

Athena がサポートする関数の詳細をご覧ください。 

クエリのパフォーマンスは、データの圧縮、パーティション化、または列指向形式への変換によって改善できます。Athena では、Parquet や ORC などのオープンソースの列指向データ形式がサポートされています。データを圧縮した列指向形式に変換することで、クエリ実行時に Athena が S3 からスキャンするデータ量を低減できるため、コストが削減されてクエリのパフォーマンスが向上します。

はい。Athena は UDF をサポートしており、カスタムスカラー関数を記述して SQL クエリで呼び出すことができます。Athena では組み込み関数を提供するとともに、UDF もサポートしているため、データの圧縮や解凍、機密データの編集、カスタマイズされた復号の適用など独自の処理を実行を支援します。

Athena Query Federation SDK を使用し、UDF を Java で記述できます。Athena に送信された SQL クエリで UDF を使用する場合、AWS Lambda で呼び出しや実行が処理されます。UDF を SQL クエリの SELECT 句および FILTER 句で使用できます。複数の UDF を同じクエリで呼び出すことができます。 

Athena Query Federation SDK を使用して UDF を記述できます。UDF の例を確認します。関数を Lambda にアップロードして、Athena クエリで呼び出すことができます。使用を開始するには、「Amazon Athena ユーザーガイド」の「Lambda を使用した UDF の作成とデプロイ」を参照してください。

Athena は、パフォーマンスを向上させるために複数のデータセット行をバッチ処理して UDF を呼び出します。 

はい。Athena には、データの移動や変換を行うことなく、他のクラウドサービスプロバイダーや他のクラウドストレージサービスのデータを分析するために使用できるデータソースコネクタがいくつか用意されています。データソースコネクタは、Azure Synapse、Azure データレイクストレージ、Google BigQuery、Google Cloud Storage を始めとする 30 のデータソースで利用できます。ハイブリッドおよびマルチクラウド環境向けの AWS ソリューションの詳細をご覧ください。

横串検索

S3 とは異なるソースにデータがある場合は、Amazon を使用して、所定のデータをクエリするか、複数のデータソースからデータを抽出して S3 に保存するパイプラインを構築することができます。Athena 横串検索により、リレーショナル、非リレーショナル、オブジェクト、カスタムデータソースに保存されているデータに対して SQL クエリを実行することができます。

組織は多くの場合、アプリケーションやビジネスプロセスのニーズを満たすデータソースにデータを保存します。これらには、S3 データレイクにデータを保存する以外に、リレーショナル、key-value、ドキュメント、インメモリ、検索、グラフ、時系列、台帳データベースが含まれる場合があります。このような多様なソースに対して分析を行うことは、一般的に新しいプログラミング言語やデータベースコンストラクトを学習し、分析に使用する前にデータを抽出、変換、複製する複雑なパイプラインを構築する必要があるため、複雑で時間がかかる場合があります。Athena は、データがある場所で SQL クエリを実行できるため、このような複雑さを軽減します。よく知っている SQL コンストラクトを使用して、複数のデータソースに対してデータのクエリを実行できます。また、スケジューリングされた SQL クエリを使用して、複数のデータソースからデータを抽出、変換し、そのデータを S3 上に保存して今後の分析で利用することができます。

Athena は、Amazon Redshift、Amazon DynamoDB、Google BigQuery、Google Cloud Storage、Azure Synapse、Azure データレイクストレージ、Snowflake、SAP Hana を始めとする 30 の一般的な AWS、オンプレミス、その他のクラウドデータストア向けの組み込みコネクタを提供します。これらのコネクタを使用することで、構造化、半構造化、オブジェクト、グラフ、時系列、およびその他のデータストレージタイプで SQL 分析のユースケースを有効にすることができます。サポートされるソースの一覧については、「Athena データソースコネクタを使用する」を参照してください。


また、Athena のデータコネクタ SDK を使用して、カスタムデータソースコネクタを作成し、Athena でクエリを実行することも可能です。ドキュメントとコネクタの実装例を確認することから始めましょう。

Athena を利用すると、新しい言語を学習したり、データを抽出 (および複製) するスクリプトを開発したり、インフラストラクチャを管理したりすることなく、既存の SQL 知識を使用してさまざまなデータソースからインサイトを抽出できます。Amazon Athena を使用すると、次のタスクを実行できます。

  • 複数のデータストアに分散するデータに対して、単一のツールと SQL ダイアレクトを使用してオンデマンド分析を実行します。
  • 複雑なマルチソース結合を ODBCJDBC インターフェイスを介して Athena の分散コンピューティングエンジンにプッシュする BI アプリケーションでデータを視覚化します。
  • Athena と AWS Step Functions の統合により、セルフサービスの ETL パイプラインとイベントベースのデータ処理ワークフローを設計します。
  • 多様なデータソースを統合し、機械学習モデルトレーニングのワークフローのための豊富な入力機能を生成する
  • データメッシュアーキテクチャ全体からインサイトを引き出す、ユーザー向けの製品としてのデータアプリケーションを開発します。
  • お客様の組織がオンプレミスのソースを AWS に移行している間、分析ユースケースをサポートする

Athena はクエリ結果を S3 にファイルとして保存します。つまり、Athena を使用して他のユーザーやアプリケーションがフェデレ―テッドデータを利用できるようにすることができます。もし、基となるソースに繰り返しクエリを実行せずに Athena を使ってデータの分析を行いたい場合は、Athena の CREATE TABLE AS 関数を使用します。また、Athena の UNLOAD 関数を使用してデータをクエリし、その結果を S3 の特定のファイル形式で保存できます。

データソースコネクタは、ターゲットデータソースと Athena の間を変換する Lambda 上で実行されるコード片です。データソースコネクタを使用してデータストアを Athena に登録すると、フェデレ―テッドデータストア上で SQL クエリを実行できるようになります。クエリがフェデレ―テッドソース上で実行されると、Athena は Lambda 関数を呼び出し、クエリのうちフェデレ―テッドソースに固有の部分を実行するタスクを課します。詳細については、「Amazon Athena ユーザーガイド」の「Amazon Athena 横串検索の使用」を参照してください。 

機械学習

ML に関する Athena のユースケースは、次の例に示すようにさまざまな業界にまたがっています。財務リスクのデータアナリストは、what-if 分析やモンテカルロシミュレーションを実行できます。ビジネスアナリストは、線形回帰や予測モデルを実行して今後の予測値を得ることで、収益予測のために先見性のある高度なビジネスダッシュボードを作成できます。マーケティングアナリストは、k 平均法クラスタリングを使用して、さまざまな顧客セグメントの判断に役立てることができます。セキュリティアナリストは、ロジスティック回帰を使用することで、ログに基づいて異常やセキュリティインシデントを発見できます。

Athena は、SageMaker にデプロイされたあらゆる種類の ML モデルを呼び出すことができます。お客様が所有するデータを使用して独自のモデルを柔軟にトレーニングできます。または、SageMaker にデプロイされたトレーニング済みのモデルを使用することもできます。例えば、新しいレコードを過去に使用したレコードと同じカテゴリに分類したい場合、お客様が所有するデータを使用してクラスター分析モデルをトレーニングするのがよいでしょう。また、現実世界のスポーツイベントに関する予測を行いたい場合、既に公開されているデータをトレーニングデータとして使用できるため、一般に公開されているモデルを使用するのがよいでしょう。分野特有または業界特有の予測モデルは、通常、SageMaker にあるお客様のデータを使用してトレーニングしますが、一般的な機械学習の場合、外部のモデルを使用することができます。

Athena では、SageMaker 上でお客様の機械学習モデルをトレーニングしてデプロイすることはできません。Athena では、お客様の機械学習モデルをトレーニングするか、SageMaker にデプロイされた既存のトレーニング済みモデルを使用するかのいずれかの方法を選択できます。SageMaker でのトレーニングステップについては、こちらのドキュメントをお読みください。

Athena では、SageMaker にデプロイされた機械学習モデルの呼び出しのみサポートされています。SageMaker 以外にも Athena を使用したいサービスがあるお客様のために、フィードバックを受け付けています。athena-feedback@amazon.com まで E メールでフィードバックをお送りください。

運用パフォーマンスの改善は、当社の機能およびサービスに継続的に追加されています。Athena 機械学習 クエリのパフォーマンスを向上させるため、SageMaker 機械学習モデルを呼び出して推論を実行する際に行をバッチ処理します。現時点では、ユーザー提供の行のバッチサイズ指定はサポートしていません。

Athena では、SQL インターフェイスでラッピングされた、機械学習による推論 (予測) 機能を提供しています。また、Athena の UDF を呼び出して、結果セットの前処理ログまたは後処理ログを呼び出すこともできます。入力には、列、レコード、テーブルを含めることができます。また、複数の呼び出しをまとめてバッチ処理にしてスケーラビリティを高めることもできます。SELECT 句や FILTER 句で推論を実行できます。詳細については、「Amazon Athena ユーザーガイド」の「Machine Learning (ML) with Amazon Athena の使用」を参照してください。

SageMaker はさまざまな ML アルゴリズムをサポートしています。また、独自の機械学習モデルを作成して SageMaker にデプロイすることもできます。例えば、新しいレコードを過去に使用したレコードと同じカテゴリに分類したい場合、お客様が所有するデータを使用してクラスター分析モデルをトレーニングするのがよいでしょう。一方、現実世界のスポーツイベントに関する予測を行いたい場合、公開されているデータをトレーニングデータとして使用できるため、一般に公開されているモデルを使用するのがよいでしょう。

分野または業界特有の予測モデルは、通常、SageMaker にあるお客様のデータを使用してトレーニングしますが、機械翻訳のような一般的な機械学習の場合、外部のモデルを使用することができます。 

セキュリティと可用性

Amazon Athena は、AWS Lake Formation によるきめ細かいアクセス制御をサポートしています。AWS Lake Formation を使用すれば、S3 データレイクにあるアクセス権限とデータカタログリソースのアクセス制御とを一元的に管理できます。Apache Iceberg、Apache Hudi、Apache Hive などのテーブルフォーマットを使用して、サポート対象のファイルフォーマットで保存されたデータの Athena クエリにきめ細かなアクセス制御ポリシーを適用できます。これにより、ユースケースに最も適したテーブルおよびファイルフォーマットを柔軟に選択し、一元化されたデータガバナンスを活用して、Athena 使用時のデータアクセスを保護することが可能になります。例えば、Iceberg のテーブルフォーマットを使用してデータを S3 データレイクに保存し、安定した書き込みトランザクションを大規模に実行しながら、Lake Formation で行レベルのセキュリティフィルタを併せて使用することで、異なる国に所在するデータアナリストは、それぞれ自国にいるお客様のみにデータへのアクセスを許可することができ、規制要件を満たすことが可能になります。今回のテーブルとファイルフォーマットのサポート拡張に際して、お客様側で Lake Formation のきめ細かなアクセス制御ポリシーのセットアップ方法を変更する必要はありません。必要となるのは、新機能が組み込まれ、クエリパフォーマンスが改善されている Athena エンジンバージョン 3 です。Athena では、AWS Identity and Access Management (IAM) ポリシー、アクセスコントロールリスト (ACL)、および S3 バケットポリシーを使用して、データへのアクセスを制御することもできます。IAM ポリシーにより、お客様は S3 バケットに対する制御をきめ細かに IAM ユーザーに付与できます。S3 上のデータへのアクセスを制御することで、Athena を使用してクエリを実行するユーザーを制限できます。

はい。S3 マネージド暗号化キーによるサーバー側の暗号化 (SSE)、AWS Key Management Service (KMS) マネージドキーによる SSE、AWS KMS マネージドキーによるクライアント側の暗号化 (CSE) で暗号化されたデータのクエリを実行できます。また、Athena は AWS KMS と統合されているため、結果セットを暗号化するオプションを利用できます。

はい。Athena は可用性が高く、複数の施設間でコンピューティングリソースを使用してクエリを実行するため、特定の施設に到達できない場合は自動的に、クエリが適切にルーティングされます。Athena では S3 を基盤データストアとして使用しているため、データの高い可用性と耐久性が実現できます。S3 は重要なデータを保存するための耐久性のあるインフラストラクチャを提供します。データは冗長化されて複数の施設に保存され、各施設で複数のデバイスに保存されます。

はい。S3 へのクロスアカウントアクセスを提供できます。

料金と請求

Athena では、スキャンしたデータに基づいてクエリごとに支払うか、クエリに必要なコンピューティングに基づいて支払うかを選択できます。クエリごとの料金は、クエリによってスキャンされたデータ量 (テラバイト (TB) 単位) に基づいています。S3 には、様々な形式のデータを保存することができます。データの圧縮、パーティション化、列指向ストレージ形式への変換を行った場合は、クエリがスキャンするデータが少なくなるため、コストが低くなります。データを列指向形式に変換することで、クエリの処理に必要な列のみが Athena で読み込まれます。プロビジョンドキャパシティでは、スキャンされたデータではなく、クエリ処理能力に対して時間単位の料金を支払います。同じアカウント内でクエリ単位の請求とコンピューティングベースの請求を使用できます。 詳細については、Amazon Athena の料金ページをご覧ください。

クエリあたりの請求では、Athena は、クエリごとにスキャンされたデータ量に基づいて課金します。データを圧縮すると、スキャンされるデータ量を減らすことができます。データを列指向形式に変換すると、Athena では、データの処理に必要な列のみが選択的に読み込まれます。データのパーティション化により、Athena でスキャンするデータ量を制限できます。これにより、コストの削減とパフォーマンスの向上につながります。詳細については、Amazon Athena の料金ページをご覧ください。

クエリ単位の請求では、データの圧縮、パーティション化、列指向形式に変換することで、クエリあたり 30%~90% を節約でき、パフォーマンスを改善できます。これらの各操作により、スキャンされるデータの量と実行に必要な時間が削減されます。これらの操作は、クエリの実行にかかる時間を短縮できることが多いため、プロビジョニング済みキャパシティを使用する場合にも推奨されます。

クエリ単位の料金では、クエリが失敗しても料金は発生しません。

はい。クエリをキャンセルした場合、クエリをキャンセルした時点までにスキャンされたデータ量に対して課金されます。

Athena は S3 から直接データをクエリするため、ソースデータについては S3 の料金に基づいて課金されます。Athena がクエリを実行すると、選択した S3 バケットに結果が保存されます。そして、これらの結果セットに対して、標準的な S3 レートで請求されます。これらのバケットをモニタリングし、ライフサイクルポリシーを使用して、保持するデータ量を管理することをお勧めします。

はい。データカタログのご利用には別途料金がかかります。Data Catalog の料金の詳細については、AWS Glue の料金ページをご覧ください。 

Amazon Athena for Apache Spark

Athena は、Apache Spark フレームワークをサポートしており、データアナリストやデータエンジニアは、インタラクティブで Athena のフルマネージドなエクスペリエンスを利用することができます。Apache Spark は、オープンソースライブラリの豊富なシステムを提供する、あらゆるサイズのデータに対する高速な分析ワークロードのために強化された、人気のあるオープンソースの分散処理システムです。Python などの表現力豊かな言語で、Athena コンソールや Athena API を通じて簡素化されたノートブックエクスペリエンスを使用して、Spark アプリケーションを構築できるようになりました。様々なソースからデータをクエリし、複数の計算を連鎖させ、その分析結果を可視化することができます。インタラクティブな Spark アプリケーションでは、Athena が 1 秒以内にアプリケーションの実行を開始するため、待ち時間が少なくなり、生産性が向上します。ユーザーはバージョンアップ、パフォーマンスチューニング、および他の AWS サービスとの統合に必要な作業を最小限に抑える、簡素化された専用 Spark エクスペリエンスを得ることができます。

Athena for Apache Spark は、インタラクティブなフルマネージド分析エクスペリエンスと、AWS サービスとの緊密な統合が必要な場合に利用します。Python のような馴染みのある表現力のある言語と Spark パッケージの増大する環境を使用して、Athena で分析を実行するために Spark を使用できます。また、Athena API を通じて、あるいは Athena コンソールの簡略化されたノートブックに自社の Spark アプリケーションを入力し、基盤となるインフラストラクチャの設定やチューニングをせずに、秒単位で Spark アプリケーションの実行を開始できます。Athena の SQL クエリ機能と同様に、Athena はフルマネージド Spark エクスペリエンスを提供し、パフォーマンスチューニング、マシン設定、ソフトウェアパッチを自動的に処理するため、バージョンアップに伴う最新状態の維持を心配する必要はない。また、Athena は Data Catalog のような AWS システム内の他の分析サービスと緊密に統合されています。そのため、Data Catalog からテーブルを参照することで、S3 データレイクにあるデータに対して Spark アプリケーションを作成することができます。

Athena for Apache Spark の利用を開始するために、Athena コンソールでノートブックを開始するか、AWS コマンドラインインターフェイス (CLI) または Athena API を利用してセッションを開始できます。ノートブックでは、Python を使用して Spark アプリケーションの入力とシャットダウンを開始することができます。Athena は Data Catalog とも統合しているので、S3 データレイクに直接あるデータなど、カタログで参照されているあらゆるデータソースで作業することができます。ノートブックを使って、さまざまなソースからデータをクエリし、複数の計算を連鎖させ、その分析結果を可視化することができるようになりました。Spark アプリケーションでは、Athena コンソールで実行状況を確認し、ログや実行履歴を確認することができます。

Athena for Apache Spark は安定した Spark 3.2 リリースをベースにしています。フルマネージドエンジンとして、Athena は Spark のカスタムビルドを提供し、お客様の関与を必要とせずに、下位互換性のある方法で自動的にほとんどの Spark バージョンアップデートを処理します。

Apache Spark アプリケーションの実行にかかる時間に対してのみ料金を支払います。Apache Spark アプリケーションの実行に使用された DPU (Data Processing Unit) の数に基づいて時間あたりの課金が発生します。1 つの DPU からは、4 つの vCPU と 16 GBのメモリが提供されます。1 秒単位で課金され、最も近い分単位に切り上げられます。

Athena コンソールでノートブックを起動するか、Athena API を使用して Spark セッションを開始すると、アプリケーション用に 2 つのノードがプロビジョニングされます。ノートブックユーザーインターフェースのサーバーとして機能するノートブックノードと、その Spark アプリケーションを調整しすべての Spark ワーカーノードと通信する Spark ドライバノードがあります。Athena は、セッションの期間中、ドライバとワーカーノードに課金します。Amazon Athena は、Apache Spark アプリケーションの作成、投稿、実行のためのユーザーインターフェイスとしてコンソール上のノートブックを提供し、追加費用なしでユーザーに提供します。Athena は、Spark セッションで使用するノートブック・ノードに対して課金しません。

Athena と他のビッグデータサービスを比較する場合

Athena などのクエリサービス、Amazon Redshift などのデータウェアハウス、Amazon EMR などの洗練されたデータ処理フレームワークはすべて、異なるニーズおよびユースケースに対応します。その作業に適したツールを選択する必要があります。Amazon Redshift では、特に複数の結合やサブクエリを伴う複雑な SQL を使用する場合に、エンタープライズレポートやビジネスインテリジェンスワークロードで高速なクエリパフォーマンスが利用できます。Amazon EMR は、オンプレミスのデプロイと比較して、Apache Hadoop、Spark、Presto などの高度な分散処理フレームワークのプロセスを簡素化し、コスト効率よく実行できるようにします。Amazon EMR は柔軟性を備えています。カスタムアプリケーションやコードを実行し、詳細なコンピューティング、メモリ、ストレージ、およびアプリケーションパラメータを定義して、分析要件を強化できます。Athena を使用すると、サーバーのセットアップや管理をしなくても、S3 内のデータに対してインタラクティブなクエリを実行する簡単な方法を提供します。

Amazon Athena と Amazon Redshift サーバーレスは、両方のサービスがサーバーレスで SQL ユーザーを有効にしている場合でも、さまざまなニーズとユースケースに対応します。

ストレージと計算を分離した MPP (Massively Parallel Processing) アーキテクチャと機械学習による自動最適化機能を持つ Amazon Redshift のようなデータウェアハウスは、サーバーレスであれプロビジョニングであれ、複雑な BI や分析ワークロードに対してあらゆるスケールで最高のコストパフォーマンスを必要とするお客様にとって最適な選択となります。Redshift は、スケーラブルな分析や、大規模な構造化・半構造化データセットの推進に最も適しています。特に複数の結合やサブクエリを伴うきわめて複雑な SQL を使用する場合に、エンタープライズレポートやビジネスインテリジェンスワークロードで最適なパフォーマンスが利用できます。Redshift は、AWS のデータベース、分析、および ML サービスと深く統合されており、ユーザーは最小限の ETL とノーコード手法によって、その場でデータにアクセスしたり、高性能分析のためにデータを簡単にウェアハウスに取り込んだり移動させたりすることができます。連携クエリ機能、Amazon Redshift Spectrum、Amazon Aurora との連携、AWS Data Exchange、ストリーミングデータサービスなどを備えた Redshift では、複数のソースからデータを利用し、ウェアハウス内のデータと組み合わせ、その上で分析や機械学習などを行うことができます。Redshift にはプロビジョニングとサーバーレスの両方のオプションがあり、インフラを管理することなく簡単に分析を始めることができます。

Athena は、拡張可能なコネクタフレームワーク (アプリケーションやオンプレミスまたは他のクラウド分析システム用の 30 以上のコネクタを含む) を通じて、Amazon Simple Storage Service (S3) または任意のデータソースのインタラクティブな分析とデータ探索に適しており、SQL 構文を簡単に使って利用可能です。Amazon Athena は、Spark、Presto、Apache Iceberg などのオープンソースエンジンとフレームワーク上に構築されており、Python や SQL を使用したり、オープンデータ形式で作業したりできる柔軟性をお客様に提供します。ユーザーがオープンソースのフレームワークとデータ形式を使用してインタラクティブな分析を行いたい場合、Amazon Athena は開始するのに最適な場所です。完全にサーバーレスなので、管理したり設定したりするインフラがありません。Athena のオープン性により、データのポータビリティが向上し、ユーザーは異なるアプリケーション、プログラム、さらにはクラウドサービスプロバイダー間でデータを移動することが可能になりました。最近、オープンソースソフトウェアの管理に新しい継続的統合アプローチを採用し、Trino、PrestoDB、Apache Iceberg プロジェクトの最新機能を常に統合していく予定です。

Amazon EMR の機能は、単なる SQL クエリの実行をはるかに超えるものです。Amazon EMR を使用すれば、機械学習 (ML)、グラフ分析、データ変換、ストリーミングデータ、および実質的にコード可能なすべてのアプリケーション向けに、スケールアウトする様々なデータ処理タスクを実行できます。カスタムコードを使用して、Apache HBase、Spark、Hadoop、Presto などの最新のビッグデータ処理フレームワークで大規模なデータセットを処理および分析する場合は、Amazon EMR を使用してください。Amazon EMR では、クラスターの構成や、インストールされているソフトウェアを完全に制御できます。

S3 のデータに対して、インフラストラクチャやクラスターを管理せずに SQL クエリを実行する場合は、Athena を使用できます。

EMR サーバーレスは、クラウド上で Spark と Hive のアプリケーションを実行する最も簡単な方法であり、業界で唯一のサーバーレス Hive ソリューションです。EMR サーバーレスでは、クラスターのチューニング、権限設定、セキュリティ、パッチ適用、管理といった運用上のオーバーヘッドを排除し、アプリケーションが実際に使用するリソースに対してのみ料金を支払うことができます。EMR のパフォーマンス最適化されたランタイムは、標準的なオープンソースの 2 倍以上のパフォーマンスを実現し、アプリケーションの実行速度を高め、計算コストを削減します。EMR のパフォーマンスに最適化されたランタイムは、標準的なオープンソースと 100% の API 互換性があり、EMR 上でアプリケーションを実行するために書き直す必要はありません。また、これらはデフォルトでオンになっているため、オンにするために Spark の深い専門知識は必要ありません。EMR では、アプリケーションを EMR クラスター、EKS クラスター、EMR サーバーレスで実行するオプションが用意されています。EMR クラスターは、どのようにアプリケーションを実行するかに関して最大限の制御と柔軟性を必要とするお客様に適しています。EMR クラスターでは、EC2 インスタンスタイプを選択し、Amazon Linux Image AMI のカスタマイズ、EC2 インスタンス設定のカスタマイズ、オープンソースフレームワークのカスタマイズと拡張、および追加のカスタムソフトウェアのクラスターインスタンスへのインストールを行うことができます。EKS での EMR は、アプリケーション間でクラスターを管理するために EKS を標準化したいお客様や、同じクラスターでオープンソースのフレームワークの異なるバージョンを使用したいお客様に適しています。EMR サーバーレスは、クラスターの管理や運用を避け、オープンソースのフレームワークを使ってアプリケーションを簡単に実行したいお客様に適しています。

もしユーザーが、Amazon Athena による SQL ベースのインタラクティブなクエリー体験と同様のインスタントオン、インタラクティブな体験をお望みなら、Amazon Athena for Apache Spark を選択することが可能です。Athena でのお客様体験は、ランタイムが短く、起動時間が秒単位で要求されるインタラクティブなアプリケーションに最適化されています。Amazon Athena は、パフォーマンスチューニング、設定、ソフトウェアのパッチ適用、およびアップデートを、ユーザーが関与することなく自動的に処理します。プログラミング言語 PySpark に精通し、データ探索やインタラクティブな分析の実行に興味を持つデータアナリストや開発者にとって、Amazon Athena for Apache Spark は使いやすい環境を提供します。

はい。Athena では Amazon EMR と同じデータ形式の多くがサポートされています。Athena Data Catalog は、Hive メタストアと互換性があります。Amazon EMR を使用していて、既に Hive のメタストアを所有している場合、Athena で DDL ステートメントを実行すれば、Amazon EMR ジョブに影響を与えずに即座にデータのクエリを開始できます。 

Athena の横串検索は、様々なリレーショナル、非リレーショナル、およびカスタムデータソースにわたって SQL クエリを実行するための統一された方法を提供します。

Athena の SQL クエリにより、Amazon SageMaker でデプロイした機械学習モデルを呼び出すことができます。Athena のこのような SQL クエリの結果を保存する S3 の場所を指定できます。