Q: Amazon Athena とは何ですか?

Amazon Athena はインタラクティブなクエリサービスで、Amazon S3 内のデータを標準 SQL を使用して簡単に分析できるようになります。Athena はサーバーが不要です。そのため、セットアップや管理のためのインフラストラクチャがなく、即座にデータ分析を開始できます。データを Athena にロードする必要もありません。S3 に保存されているデータと直接連携します。Athena マネジメントコンソールにログインし、スキーマを定義してクエリを開始するだけで開始できます。Amazon Athena では、標準 SQL をフルサポートした Presto を使用し、CSV、JSON、ORC、Apache Parquet、Avro を含むさまざまな標準データ形式で機能します。Amazon Athena は、すばやいアドホッククエリの実行に最適で、Amazon QuickSight と統合することで可視化が容易になりますが、大規模な結合、ウィンドウ関数、配列などの複雑な分析も処理できます。

Q: Amazon Athena で何ができますか?

Amazon Athena を使用すると、Amazon S3 に保存したデータを分析できます。Athena では、Athena にデータの集約やロードをしなくても、ANSI SQL を使用してアドホッククエリを実行できます。Amazon Athena では、非構造化、半構造化、構造化データセットを処理できます。例えば、CSV、JSON、Avro などのデータ形式や、Apache Parquet や Apache ORC などの列指向データ形式などです。Amazon Athena を Amazon QuickSight と統合することにより、可視化が容易になります。また、Amazon Athena では、JDBC ドライバー経由で接続して、ビジネスインテリジェンスツールや SQL クライアントを使ったレポートの生成やデータの調査を行えます。

Q: Amazon Athena の使用を開始するにはどうすればよいですか?

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

Q: Amazon Athena にアクセスするにはどうすればよいですか?

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

Q: Amazon Athena に関連するサービスの上限はどのくらいですか?

サービスの上限に関する詳細については、ここをクリックしてください。

Q: Amazon Athena の基盤テクノロジーは何ですか?

Amazon Athena では、標準 SQL をフルサポートした Presto を使用し、CSV、JSON、ORC、Avro、Parquet を含むさまざまな標準データ形式で機能します。Athena では大規模な結合、ウィンドウ関数、配列などの複雑な分析を処理できます。Amazon Athena は基盤となるデータストアとして Amazon S3 を使用するため、複数の施設および各施設内の複数のデバイスにまたがって冗長的に保存されたデータにより、高い可用性と耐久性が実現されます。

Q: Amazon Athena ではテーブル定義とスキーマがどのように保存されますか?

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

Q: Amazon Athena は、どのリージョンで利用できますか?

Amazon Athena サービスのリージョン別の可用性の詳細については、リージョンの製品およびサービスを参照してください。

Q: 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 内のデータに対してアドホッククエリを簡単に実行できます。

Q: Amazon Redshift のようなフル機能のエンタープライズデータウェアハウスと、Amazon Athena のようなクエリサービスはどのように使い分ければよいですか?

Amazon Redshift のようなデータウェアハウスは、在庫システム、金融システム、および小売販売システムなどのさまざまなソースからデータを一般的な形式で取得し、長期間保存して、履歴データから洗練されたビジネスレポートを構築する必要がある場合に適しています。こうした場合には、Amazon Redshift のようなデータウェアハウスは最適です。

データウェアハウスは、企業全体からデータを収集し、「信頼できる唯一の情報源」としてレポート生成および分析に使用できます。データウェアハウスでは、多くのソースからデータが取得され、形式化および整理され、保存されます。また、ビジネスレポートの生成を行う複雑で高速なクエリに対応しています。Amazon Redshift のクエリエンジンは、非常に大規模なデータベーステーブルを多数結合する複雑なクエリを実行する必要がある場合のユースケースで、パフォーマンスを特に発揮するように最適化されています。TPC-DS は、このユースケースをレプリケートするために設計された標準のベンチマークで、Redshift では、これらのクエリを非構造化データ用に最適化されているクエリサービスと比べて最大 20 倍高速で実行します。非常に大規模な多数のテーブル間で多数の結合がある、高度に構造化されたデータに対してクエリを実行する必要がある場合は、Amazon Redshift をお勧めします。

これに対して、Amazon Athena のようなクエリサービスを使用すると、データの形式化やインフラストラクチャの管理について心配することなく、Amazon S3 のデータに対して直接インタラクティブにクエリを実行できます。例えば、Athena は、一部のウェブログですばやくクエリを実行し、サイトのパフォーマンス問題のトラブルシューティングのみが必要とされる場合に適しています。クエリサービスを使用すると、迅速に開始できます。データのテーブルを定義し、標準 SQL を使用してクエリを開始するのみです。

また、両方のサービスを併用することもできます。Amazon Redshift にロードする前に、Amazon S3 でデータをステージングすると、そのデータも Amazon Athena で登録され、クエリを実行できます。

Q: Amazon EMR と Amazon Athena はどのように使い分ければよいですか?

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

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

Q: Amazon EMR を使用して処理するデータへのクエリに Amazon Athena を使用できますか?

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

Q: Amazon S3 でデータのテーブルやスキーマをどのように作成できますか?

Amazon Athena では Apache Hive DDL を使用してテーブルを定義します。JDBC ドライバー経由で Athena コンソールを使用するか、Athena 作成テーブルウィザードを使用して、DDL ステートメントを実行できます。Amazon Athena で新しいテーブルを作成すると、スキーマがデータカタログに保存され、クエリを実行する時に使用されますが、S3 内のデータは修正されません。
Athena では、スキーマオンリードと呼ばれるアプローチを使用します。このため、クエリの実行時にデータ上にスキーマを射影できます。これにより、データのロードや変換が不要になります。詳細については、テーブルの作成を参照してください。

Q: Amazon Athena ではどのデータ形式がサポートされていますか?

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

Q: Amazon Athena ではどのデータ型がサポートされていますか?

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

Q: Athena で Hive クエリを実行できますか?

Amazon Athena では、Hive を DDL (データ定義言語) 用や、テーブルおよび/またはパーティションの作成、変更、削除にのみ使用します。サポートされているステートメントすべての一覧については、こちらをクリックしてください。Amazon S3 で SQL クエリを実行する場合、Athena では Presto が使用されます。Amazon S3 のデータをクエリする場合、ANSI 準拠 SQL SELECT ステートメントを実行できます。

Q: SerDe とは何ですか?

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

  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"

Q: 独自の SerDe (シリアライザー/デシリアライザー) を Amazon Athena に追加できますか?

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

Q: Spark または Hive を使用して Parquet ファイルまたは ORC ファイルを作成しました。Athena 経由でクエリを実行できますか?

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

Q: Kinesis Firehose から取得したデータがあります。Athena を使用してクエリを実行するにはどうすればよいですか?

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

Q: Amazon Athena ではデータのパーティション化をサポートしていますか?

はい。Amazon Athena では、任意の列でデータを分割できます。パーティションにより、各クエリスキャンのデータ量を制限できます。これにより、コストを節約し、パフォーマンスを向上できます。CREATE TABLE ステートメントで PARTITIONED BY 節を使用して、パーティションスキームを指定できます。詳細については、データのパーティション化を参照してください。

Q: Amazon Athena で既存のテーブルに新しいデータを追加するにはどうすればよいですか?

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

Q: Amazon S3 内に既に大量のログデータがあります。Amazon Athena を使用して、クエリを実行できますか?

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

Q: Amazon Athena ではどの種類のクエリがサポートされていますか?

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

Q: Amazon QuickSight と Amazon Athena を併用できますか?

はい。Amazon Athena と Amazon QuickSight を統合することにより、Amazon S3 に保存したデータの可視化が容易になります。

Q: Athena では他の BI ツールや SQL クライアントをサポートしていますか?

はい。Amazon Athena には、他のビジネスインテリジェンスツールや SQL クライアントで使用できる JDBC ドライバーが付属しています。詳細については、Athena に付属している JDBC ドライバーを参照してください。

Q: Athena はユーザー定義関数 (UDF) をサポートしていますか?

現在、Athena ではカスタム UDF をサポートしていません。カスタム UDF のサポートが必要な場合は、お客様の要件についての詳細を athena-feedback@amazon.com に E メールでお問い合わせください。

Q: Amazon Athena でサポートされている関数をどのように利用できますか?

Amazon Athena でサポートされている関数の詳細については、こちらをクリックしてください。

Q: クエリのパフォーマンスを改善するにはどうすればよいですか?

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

Q: 保管されているデータへのアクセスを制御するにはどうすればよいですか?

Amazon Athena では、AWS Identity and Access Management (IAM) ポリシー、アクセスコントロールリスト (ACL)、および Amazon S3 バケットポリシーを使用してデータへのアクセスを制御できます。IAM ポリシーにより、お客様は S3 バケットに対して細かいコントロールを IAM ユーザーに付与できます。S3 内のデータへのアクセスを制御することで、Athena を使用してクエリを実行するユーザーを制限できます。

 

Athena では、Amazon S3 内の暗号化データをクエリできますか?

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

 

Q: Athena は可用性に優れていますか?

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

Q: 他のユーザーの S3 バケットへのクロスアカウントアクセスを実行できますか?

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

Q: Amazon Athena の料金はいくらですか?

Amazon Athena の料金はクエリ単位です。クエリでスキャンされたデータ量に基づいて課金されます。データは Amazon S3 にさまざまな形式で保存できます。データの圧縮、パーティション化、列指向ストレージ形式への変換を行った場合は、データのスキャン量が減るため、コストが低くなります。データを列指向形式に変換することで、クエリの処理に必要な列のみが Athena で読み込まれます。詳細については、Athena の料金ページを参照してください。

Q: 列指向形式を使用するとコストが低くなるのはなぜですか?

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

Q: コストを削減するにはどうすればよいですか?

データの圧縮、パーティション化、列指向形式への変換により、クエリのコストが 30%~90% 削減され、パフォーマンスを向上できます。これらの各オペレーションにより、クエリを実行するために Amazon Athena でスキャンする必要があるデータ量が削減されます。Amazon Athena では、最も一般的なオープンソース列指向形式である Apache Parquet および ORC をサポートしています。クエリごとにスキャンされたデータ量は、Athena コンソールで確認できます。 

Q: Amazon Athena でのクエリが失敗した場合、課金されますか?

いいえ。クエリが失敗した場合は課金されません。

Q: Amazon Athena でのクエリをキャンセルした場合、課金されますか?

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

Q: Amazon Athena に関連する追加料金はありますか?

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