テクノロジー クラウドコンピューティング 非公開: AWS Athena: 知っておくべきことすべて

AWS Athena: 知っておくべきことすべて

AWS Athena は、AWS S3 に保存されているデータに対する柔軟でコスト効率の高いクエリ サービスです。

AWS は世界最大のクラウドプロバイダーの 1 つです。クラウド ストレージとコンピューティングのニーズに対応する多数のサービスを提供します。 AWS S3 は、 AWS プラットフォームで最も人気のあるサービスの 1 つです。比類のない耐久性とデータの可用性を提供すると同時に、クラウド内で最も安価なストレージ オプションの 1 つです。

多数の機能と理論的には無限のストレージを考慮すると、S3 バケットにテラバイトまたはペタバイトのデータを保存することが可能です。すべてのファイルを開いてペタバイト単位のデータを手動で読み取った場合、このようなデータを分析することはほとんど不可能です。ここで AWS Athena サービスが登場します。

簡単に言うと、 AWS Athena は 、SQL クエリを使用して S3 バケット内の利用可能なデータにアクセスするだけで、データ分析サービスとして使用されます。したがって、SQL の基本さえ理解していれば、AWS Athena を使用した S3 データの分析に取り組むことができます。

短い例でこれを理解しましょう。バケットの 1 つを、組織内の複数のアカウントにあるすべてのバランサーのアクセス ログ バケットとして構成したと仮定します。何年にもわたるログ データをクエリし、これらのログ ファイルから重要で意味のある洞察を得るにはどうすればよいでしょうか?答えは AWS Athena です。

AWS Athena: 知っておくべきことすべて
AWS Athena: 知っておくべきことすべて

AWS Athenaの特徴

  • SQL ベースのツール: AWS Athena は、非常に使いやすい SQL ベースのサービスです。 Athena にバケットの 1 つを指定し、データのスキーマを定義して、バケット内で SQL クエリの使用を開始するだけです。
  • サーバーレス: AWS Athena を実行するためのインフラストラクチャを維持する必要はありません。 Athena はサーバーレスであり、要件に応じて複数のコンピューティング リソースを自動的に使用するように最適化されています。
  • 高速かつ最適化: Athena は、効率的な数のリソースを使用してクエリ結果をできるだけ早く提供するように最適化されています。 S3 データの小規模で複雑な分析に最適です。
  • 費用対効果の高い: Athena は従量課金制のサービスです。これは、AWS Athena の使用に基本コストがかからないことを意味します。 Athena サービスで実行したクエリに対してのみ料金が発生します。
  • データの耐久性と可用性: Athena は S3 バケット内のデータに依存しているため、データの可用性と耐久性が高いことが保証されます。
  • サポート: Athena は、JSON、CSV、Avro、ORC などのいくつかのファイル形式をサポートしています。
  • セキュリティ: Athena は、IAM、バケット ポリシー、ACL などのセキュリティ機能を利用し、高度な安全性を実現します。
  • Athena バックエンド: Athena は、オープンソースの Presto を バックエンドとして使用します。 Presto は、ビッグ データ ワークロードのクエリと分析を行うための分散 SQL エンジンです。
AWS Athena: 知っておくべきことすべて
AWS Athena: 知っておくべきことすべて

AWS Athena の価格設定と最適化

AWS Athena を使用する場合、AWS Athena の使用時にスキャンされるテラバイトごとに 5 ドルの料金がかかります。この価格は、一部の AWS リージョンでは若干異なる場合があります。

  • 効率的なクエリ : SQL に精通している場合は、SQL を使用してデータから特定の結果を取得する方法が複数あることを知っておく必要があります。 Athena を最適化するには、クエリの実行にかかる時間を短縮する効率的なクエリを使用できます。
  • データ変換: クエリをさらに最適化したい場合は、データを圧縮、分割、またはより小さいデータセットに変換して、クエリの実行時間をさらに短縮できます。データ変換を使用すると、クエリを最大 90% 最適化できます。
  • 仮想テーブルの結合: テーブルの結合は SQL の非常に重要な機能です。単純な操作のように見えるかもしれませんが、非常に複雑な操作になる可能性があります。大きいテーブルを左側に配置し、データの少ないテーブルを右側に配置することをお勧めします。
AWS Athena: 知っておくべきことすべて
AWS Athena: 知っておくべきことすべて

AWS Athena と Redshift Spectrum の違い

Redshift Spectrum は、AWS S3 バケットでクエリを実行するために使用できるもう 1 つのサービスです。 Redshift Spectrum と Athena はどちらもサーバーレスで、S3 上で複雑なクエリを実行でき、価格は処理されるデータの 1 テラバイトあたり 5% です。では、その違いは何でしょうか?

パフォーマンス

AWS Athena は、AWS が提供するリソースのプールから計算リソースを使用します。対照的に、Redshift スペクトルは、Redshift クラスターのサイズに従って割り当てられたリソースを使用します。これにより、Redshift Spectrum サービスで使用されるリソースをより詳細に制御できるようになり、パフォーマンスを向上させたい場合には、いつでも Redshift クラスターのサイズを増やすことができます。

処理するデータをロードする

どちらのサービスも、データに対して SQL クエリを実行するために仮想テーブルを使用します。仮想テーブルは、スキーマ管理のために Glue データ カタログを使用して作成されます。 Athena は Glue データ カタログ スキーマのデータを直接使用できますが、Redshift Spectrum を使用する場合は、Glue データ カタログ スキーマから外部テーブルを設定する必要があります。

これら 2 つのサービスの主な違いは、Redshift spectrum と Athena のどちらかを選択する際の主な違いです。 Redshift データ ウェアハウスに保存されているデータとともに S3 のデータをクエリする場合、または S3 でのクエリのパフォーマンスを向上させるために高いコストを払っても構わない場合は、Redshift Spectrum を使用する必要があります。 Athena は、すべてのデータが S3 バケットのみにある場合に役立ちます。

AWS Athena: 知っておくべきことすべて
AWS Athena: 知っておくべきことすべて

AWS Athena と S3 Select の違い

S3 select は、SQL を使用して S3 内のデータをクエリするための AWS のもう 1 つのサーバーレス サービスです。ただし、S3 Select と Athena の主な違いは、S3 Select を使用する場合は SQL SELECT クエリのみを使用できるのに対し、Athena はあらゆる種類の SQL クエリに使用できることです。 S3 select のもう 1 つの制限は、一度に 1 つのオブジェクトに対してのみ SELECT 操作を実行できることです。

したがって、要件が S3 オブジェクトからデータまたはデータのサブセットを取得することのみである場合は、S3 Select を使用する必要があります。 JOIN などの複雑なクエリや操作、または S3 バケット全体のデータを処理するには、AWS Athena を使用する必要があります。

AWS Athena: 知っておくべきことすべて
AWS Athena: 知っておくべきことすべて

AWS Athena を使用する利点

  • Athena を使用すると、データ用に複雑で高価なデータ分析ツールを開発する必要がなくなります。
  • Athena はサーバーレスなので、非常に使いやすいサービスです。インフラストラクチャを保守する必要はありません。
  • AWS は、Athena クエリを実行してから数秒以内にクエリ結果を取得できるように Athena を最適化しました。
  • Athena はサーバーレスであるため、Athena サービスの料金を支払う必要はありません。実行することを選択したクエリに対してのみ料金が発生します。クエリをキャンセルした場合でも、クエリ全体ではなく、処理されたデータに対してのみ料金が請求されます。
  • Athena は他の AWS サービスと簡単に統合できます。 AWS Athena の最も重要かつ価値のある統合の 1 つは、AWS Glue サービスとの統合です。 AWS Glue は、データをより効率的で読みやすい形式に変換するために使用できる ETL サービスで、その後 AWS Athena で分析できます。
  • Athena では、複数のクエリを同時に実行できます。

AWS Athena の制限事項

  • 行サイズ: 仮想 AWS Athena テーブルの行サイズは 32 メガバイトを超えてはなりません。 CSV および JSON ファイルの場合、この制限は非常に限られた場合に最大 100 メガバイトまで増やすことができますが、望ましくないエラーを避けるために行サイズを 32 メガバイトに制限することを強くお勧めします。
  • 隠しファイル: 名前がアンダースコア (_) またはドット (.) で始まるファイルは、Athena サービスによって非表示として扱われます。これは、不要なファイルの処理を回避する機能として使用できます。
  • Athena は、 S3 Glacier または S3 Glacier Deep Archive のデータを処理できません 。これらのストレージ クラスはデータ アーカイブ オプション専用であり、取得に数分から数時間かかるため、AWS Athena がこれらのクラスからデータを取得できないことは理解されています。
  • Athena は ストアド プロシージャ をサポートしていません。
  • Athena バージョン 1 はパラメータ化されたクエリをサポートしていません 。これは Athena バージョン 2 でサポートされています。
  • MERGE、UPDATE、CREATE TABLE LIKE、 DESCRIBE INPUT DESCRIBE OUTPUT などのステートメントはサポートされていません。

結論

この記事では、AWS のデータ分析ツールである AWS Athena、その機能、利点、およびいくつかの制限について説明しました。 Athena は、S3 バケット内のデータを処理および分析するための最も強力なツールの 1 つです。サービスの制限も非常にシンプルで、必要に応じて回避できます。

AWS S3 ストレージを保護するためのベスト プラクティスも参照してください。

「 AWS Athena: 知っておくべきことすべて」についてわかりやすく解説!絶対に観るべきベスト2動画

第二十回 ちょっぴりDD -Amazon Athena であっちこっちのデータを一括分析しよう
【AWS Black Belt Online Seminar】Amazon Athena

AWS Athena は、AWS S3 に保存されているデータに対する柔軟でコスト効率の高いクエリ サービスです。

AWS は世界最大のクラウドプロバイダーの 1 つです。クラウド ストレージとコンピューティングのニーズに対応する多数のサービスを提供します。 AWS S3 は、 AWS プラットフォームで最も人気のあるサービスの 1 つです。比類のない耐久性とデータの可用性を提供すると同時に、クラウド内で最も安価なストレージ オプションの 1 つです。

多数の機能と理論的には無限のストレージを考慮すると、S3 バケットにテラバイトまたはペタバイトのデータを保存することが可能です。すべてのファイルを開いてペタバイト単位のデータを手動で読み取った場合、このようなデータを分析することはほとんど不可能です。ここで AWS Athena サービスが登場します。

簡単に言うと、 AWS Athena は 、SQL クエリを使用して S3 バケット内の利用可能なデータにアクセスするだけで、データ分析サービスとして使用されます。したがって、SQL の基本さえ理解していれば、AWS Athena を使用した S3 データの分析に取り組むことができます。

短い例でこれを理解しましょう。バケットの 1 つを、組織内の複数のアカウントにあるすべてのバランサーのアクセス ログ バケットとして構成したと仮定します。何年にもわたるログ データをクエリし、これらのログ ファイルから重要で意味のある洞察を得るにはどうすればよいでしょうか?答えは AWS Athena です。

AWS Athena: 知っておくべきことすべて
AWS Athena: 知っておくべきことすべて

AWS Athenaの特徴

  • SQL ベースのツール: AWS Athena は、非常に使いやすい SQL ベースのサービスです。 Athena にバケットの 1 つを指定し、データのスキーマを定義して、バケット内で SQL クエリの使用を開始するだけです。
  • サーバーレス: AWS Athena を実行するためのインフラストラクチャを維持する必要はありません。 Athena はサーバーレスであり、要件に応じて複数のコンピューティング リソースを自動的に使用するように最適化されています。
  • 高速かつ最適化: Athena は、効率的な数のリソースを使用してクエリ結果をできるだけ早く提供するように最適化されています。 S3 データの小規模で複雑な分析に最適です。
  • 費用対効果の高い: Athena は従量課金制のサービスです。これは、AWS Athena の使用に基本コストがかからないことを意味します。 Athena サービスで実行したクエリに対してのみ料金が発生します。
  • データの耐久性と可用性: Athena は S3 バケット内のデータに依存しているため、データの可用性と耐久性が高いことが保証されます。
  • サポート: Athena は、JSON、CSV、Avro、ORC などのいくつかのファイル形式をサポートしています。
  • セキュリティ: Athena は、IAM、バケット ポリシー、ACL などのセキュリティ機能を利用し、高度な安全性を実現します。
  • Athena バックエンド: Athena は、オープンソースの Presto を バックエンドとして使用します。 Presto は、ビッグ データ ワークロードのクエリと分析を行うための分散 SQL エンジンです。
AWS Athena: 知っておくべきことすべて
AWS Athena: 知っておくべきことすべて

AWS Athena の価格設定と最適化

AWS Athena を使用する場合、AWS Athena の使用時にスキャンされるテラバイトごとに 5 ドルの料金がかかります。この価格は、一部の AWS リージョンでは若干異なる場合があります。

  • 効率的なクエリ : SQL に精通している場合は、SQL を使用してデータから特定の結果を取得する方法が複数あることを知っておく必要があります。 Athena を最適化するには、クエリの実行にかかる時間を短縮する効率的なクエリを使用できます。
  • データ変換: クエリをさらに最適化したい場合は、データを圧縮、分割、またはより小さいデータセットに変換して、クエリの実行時間をさらに短縮できます。データ変換を使用すると、クエリを最大 90% 最適化できます。
  • 仮想テーブルの結合: テーブルの結合は SQL の非常に重要な機能です。単純な操作のように見えるかもしれませんが、非常に複雑な操作になる可能性があります。大きいテーブルを左側に配置し、データの少ないテーブルを右側に配置することをお勧めします。
AWS Athena: 知っておくべきことすべて
AWS Athena: 知っておくべきことすべて

AWS Athena と Redshift Spectrum の違い

Redshift Spectrum は、AWS S3 バケットでクエリを実行するために使用できるもう 1 つのサービスです。 Redshift Spectrum と Athena はどちらもサーバーレスで、S3 上で複雑なクエリを実行でき、価格は処理されるデータの 1 テラバイトあたり 5% です。では、その違いは何でしょうか?

パフォーマンス

AWS Athena は、AWS が提供するリソースのプールから計算リソースを使用します。対照的に、Redshift スペクトルは、Redshift クラスターのサイズに従って割り当てられたリソースを使用します。これにより、Redshift Spectrum サービスで使用されるリソースをより詳細に制御できるようになり、パフォーマンスを向上させたい場合には、いつでも Redshift クラスターのサイズを増やすことができます。

処理するデータをロードする

どちらのサービスも、データに対して SQL クエリを実行するために仮想テーブルを使用します。仮想テーブルは、スキーマ管理のために Glue データ カタログを使用して作成されます。 Athena は Glue データ カタログ スキーマのデータを直接使用できますが、Redshift Spectrum を使用する場合は、Glue データ カタログ スキーマから外部テーブルを設定する必要があります。

これら 2 つのサービスの主な違いは、Redshift spectrum と Athena のどちらかを選択する際の主な違いです。 Redshift データ ウェアハウスに保存されているデータとともに S3 のデータをクエリする場合、または S3 でのクエリのパフォーマンスを向上させるために高いコストを払っても構わない場合は、Redshift Spectrum を使用する必要があります。 Athena は、すべてのデータが S3 バケットのみにある場合に役立ちます。

AWS Athena: 知っておくべきことすべて
AWS Athena: 知っておくべきことすべて

AWS Athena と S3 Select の違い

S3 select は、SQL を使用して S3 内のデータをクエリするための AWS のもう 1 つのサーバーレス サービスです。ただし、S3 Select と Athena の主な違いは、S3 Select を使用する場合は SQL SELECT クエリのみを使用できるのに対し、Athena はあらゆる種類の SQL クエリに使用できることです。 S3 select のもう 1 つの制限は、一度に 1 つのオブジェクトに対してのみ SELECT 操作を実行できることです。

したがって、要件が S3 オブジェクトからデータまたはデータのサブセットを取得することのみである場合は、S3 Select を使用する必要があります。 JOIN などの複雑なクエリや操作、または S3 バケット全体のデータを処理するには、AWS Athena を使用する必要があります。

AWS Athena: 知っておくべきことすべて
AWS Athena: 知っておくべきことすべて

AWS Athena を使用する利点

  • Athena を使用すると、データ用に複雑で高価なデータ分析ツールを開発する必要がなくなります。
  • Athena はサーバーレスなので、非常に使いやすいサービスです。インフラストラクチャを保守する必要はありません。
  • AWS は、Athena クエリを実行してから数秒以内にクエリ結果を取得できるように Athena を最適化しました。
  • Athena はサーバーレスであるため、Athena サービスの料金を支払う必要はありません。実行することを選択したクエリに対してのみ料金が発生します。クエリをキャンセルした場合でも、クエリ全体ではなく、処理されたデータに対してのみ料金が請求されます。
  • Athena は他の AWS サービスと簡単に統合できます。 AWS Athena の最も重要かつ価値のある統合の 1 つは、AWS Glue サービスとの統合です。 AWS Glue は、データをより効率的で読みやすい形式に変換するために使用できる ETL サービスで、その後 AWS Athena で分析できます。
  • Athena では、複数のクエリを同時に実行できます。

AWS Athena の制限事項

  • 行サイズ: 仮想 AWS Athena テーブルの行サイズは 32 メガバイトを超えてはなりません。 CSV および JSON ファイルの場合、この制限は非常に限られた場合に最大 100 メガバイトまで増やすことができますが、望ましくないエラーを避けるために行サイズを 32 メガバイトに制限することを強くお勧めします。
  • 隠しファイル: 名前がアンダースコア (_) またはドット (.) で始まるファイルは、Athena サービスによって非表示として扱われます。これは、不要なファイルの処理を回避する機能として使用できます。
  • Athena は、 S3 Glacier または S3 Glacier Deep Archive のデータを処理できません 。これらのストレージ クラスはデータ アーカイブ オプション専用であり、取得に数分から数時間かかるため、AWS Athena がこれらのクラスからデータを取得できないことは理解されています。
  • Athena は ストアド プロシージャ をサポートしていません。
  • Athena バージョン 1 はパラメータ化されたクエリをサポートしていません 。これは Athena バージョン 2 でサポートされています。
  • MERGE、UPDATE、CREATE TABLE LIKE、 DESCRIBE INPUT DESCRIBE OUTPUT などのステートメントはサポートされていません。

結論

この記事では、AWS のデータ分析ツールである AWS Athena、その機能、利点、およびいくつかの制限について説明しました。 Athena は、S3 バケット内のデータを処理および分析するための最も強力なツールの 1 つです。サービスの制限も非常にシンプルで、必要に応じて回避できます。

AWS S3 ストレージを保護するためのベスト プラクティスも参照してください。

「 AWS Athena: 知っておくべきことすべて」についてわかりやすく解説!絶対に観るべきベスト2動画

第二十回 ちょっぴりDD -Amazon Athena であっちこっちのデータを一括分析しよう
【AWS Black Belt Online Seminar】Amazon Athena