AWS Athena:知っておくべきことすべて
公開: 2022-05-02AWS Athenaは、AWSS3に保存されているデータに対する柔軟で費用効果の高いクエリサービスです。
AWSは、世界最大のクラウドプロバイダーの1つです。 クラウドストレージと計算のニーズに対応する多数のサービスを提供します。 AWS S3は、AWSプラットフォームで最も人気のあるサービスの1つです。 比類のない耐久性とデータの可用性を提供すると同時に、クラウドで最も安価なストレージオプションの1つです。

その多数の機能と理論的には無限のストレージを考えると、S3バケットにテラバイトまたはペタバイトのデータを含めることができます。 すべてのファイルを開いてペタバイト単位のデータを手動で読み取る場合、このようなデータを分析することはほとんど不可能です。 これがAWSAthenaサービスの出番です。
簡単に言うと、AWS Athenaは、SQLクエリを使用してS3バケットで利用可能なデータにアクセスするだけで、データ分析サービスとして使用されます。 したがって、SQLの基本さえ理解していれば、AWSAthenaを使用してS3データの分析に取り掛かることができます。
簡単な例でこれを理解しましょう。 バケットの1つを、組織内の複数のアカウントにあるすべてのバランサーのアクセスログバケットとして構成したと仮定します。 何年ものログデータをクエリし、これらのログファイルから重要な意味のある洞察をどのように取得しますか? 答えはAWSAthenaです。
AWSAthenaの機能
- SQLベースのツール: AWS Athenaは、非常に使いやすいSQLベースのサービスです。 Athenaをバケットの1つにポイントし、データのスキーマを定義してから、バケットでSQLクエリの使用を開始するだけです。
- サーバーレス:AWSAthenaを実行するためのインフラストラクチャを維持する必要はありません。 Athenaはサーバーレスであり、要件に応じて複数のコンピューティングリソースを自動的に使用するように最適化されています。
- 高速で最適化: Athenaは、効率的な数のリソースを使用してクエリ結果をできるだけ早く配信するように最適化されています。 これは、S3データの小規模で複雑な分析に最適です。
- 費用対効果: Athenaは従量制のサービスです。 これは、AWSAthenaを使用するための基本コストがないことを意味します。 Athenaサービスで実行したクエリに対してのみ料金を支払います。
- データの耐久性と可用性: AthenaはS3バケット内のデータに依存しているため、データの可用性と耐久性が高いので安心できます。
- サポート: Athenaは、JSON、CSV、Avro、ORCなどのいくつかのファイル形式をサポートしています。
- セキュリティ: Athenaは、IAM、バケットポリシー、ACLなどのセキュリティ機能を利用して、安全性を高めています。
- Athenaバックエンド: AthenaはオープンソースのPrestoをバックエンドとして使用します。 Prestoは、ビッグデータのワークロードをクエリおよび分析するための分散SQLエンジンです。
AWSAthenaの価格設定と最適化
AWS Athenaを使用する場合、AWSAthenaを使用するときにスキャンされるテラバイトあたり5ドルの料金が請求されます。 この価格は、AWSリージョンによっては若干異なる場合があります。
- 効率的なクエリ:SQLに精通している場合は、SQLを使用してデータから特定の結果を取得する方法が複数ある可能性があることを知っておく必要があります。 Athenaを最適化するために、クエリの実行にかかる時間が短縮される効率的なクエリを使用できます。
- データ変換:クエリをさらに最適化する場合は、データを圧縮、分割、またはより小さなデータセットに変換して、クエリの実行時間をさらに短縮できます。 データ変換を使用することで、クエリを最大90%最適化できます。
- 仮想テーブルの結合:テーブルの結合はSQLの非常に重要な機能です。 単純な操作のように見えるかもしれませんが、非常に複雑な操作になる可能性があります。 左側に大きなテーブルを保持し、右側にデータの少ないテーブルを保持することをお勧めします。
AWSAthenaとRedshiftSpectrumの違い
Redshift Spectrumは、AWSS3バケットでクエリを実行するために使用できるもう1つのサービスです。 Redshift SpectrumとAthenaはどちらもサーバーレスであり、S3で複雑なクエリを実行でき、処理されるデータのテラバイトあたり5%の価格ですが、違いは何ですか?

パフォーマンス
AWS Athenaは、AWSが提供するリソースのプールからの計算リソースを使用します。 対照的に、Redshiftスペクトルは、Redshiftクラスターサイズに従って割り当てられたリソースを使用します。 これにより、Redshift Spectrumサービスで使用されているリソースをより細かく制御できます。パフォーマンスを向上させたい場合は、Redshiftクラスターのサイズをいつでも増やすことができます。
処理のためにデータをロードする
どちらのサービスも、データに対してSQLクエリを実行するために仮想テーブルを使用します。 仮想テーブルは、スキーマ管理用のGlueデータカタログを使用して作成されます。 AthenaはGlueデータカタログスキーマのデータを直接使用できますが、Redshift Spectrumを使用する場合は、Glueデータカタログスキーマの外部テーブルを構成する必要があります。
これらは2つのサービスの主な違いであるため、RedshiftスペクトルとAthenaのどちらかを選択する場合。 S3のデータをRedshiftデータウェアハウスに保存されているデータと一緒にクエリする場合、またはS3のクエリパフォーマンスを向上させるためにより高いコストを支払う場合は、RedshiftSpectrumを使用する必要があります。 Athenaは、すべてのデータがS3バケットにのみ存在する場合に役立ちます。
AWSAthenaとS3Selectの違い
S3 selectは、SQLを使用してS3のデータをクエリするAWSのもう1つのサーバーレスサービスです。 ただし、S3 SelectとAthenaの主な違いは、S3Selectを使用する場合にのみSQLSELECTクエリを使用できるのに対し、Athenaはすべての種類のSQLクエリに使用できることです。 S3 selectのもう1つの制限は、一度に1つのオブジェクトに対してのみSELECT操作を実行できることです。
したがって、要件がS3オブジェクトからデータまたはデータのサブセットのみをプルすることである場合は、S3Selectを使用する必要があります。 JOINのような複雑なクエリや操作の場合、またはS3バケット全体のデータを処理する場合は、AWSAthenaを使用する必要があります。
AWSAthenaを使用する利点
- Athenaを使用すると、データ用の複雑で高価なデータ分析ツールを開発する必要がなくなります。
- Athenaはサーバーレスであるため、かなり使いやすいサービスです。 インフラストラクチャを維持する必要はありません。
- AWSは、Athenaクエリを実行してから数秒以内にクエリ結果を取得できるようにAthenaを最適化しました。
- Athenaはサーバーレスであるため、Athenaサービスの料金を支払う必要はありません。 実行することを選択したクエリに対してのみ料金を支払います。 クエリをキャンセルした場合でも、処理されたデータに対してのみ課金され、クエリ全体に対しては課金されません。
- Athenaは他のAWSサービスと簡単に統合できます。 AWS Athenaにとって最も重要で価値のある統合の1つは、AWSGlueサービスとの統合です。 AWS Glueは、データをより効率的で読みやすい形式に変換するために使用できるETLサービスであり、AWSAthenaで分析できます。
- Athenaを使用すると、複数のクエリを同時に実行できます。
AWSAthenaの制限
- 行サイズ:仮想AWSAthenaテーブルの行サイズは32メガバイトを超えてはなりません。 この制限は、CSVおよびJSONファイルの非常に限られたケースで最大100メガバイトに増やすことができますが、不要なエラーを回避するために、行サイズを32メガバイトに制限することを強くお勧めします。
- 非表示のファイル:名前がアンダースコア(_)またはドット(。)で始まるファイルは、Athenaサービスによって非表示として扱われます。 これは、不要なファイルの処理を回避するための機能として使用できます。
- Athenaは、S3GlacierまたはS3GlacierDeepArchiveのデータを処理できません。 これらのストレージクラスはデータアーカイブオプション専用であり、取得時間は数分から数時間であるため、AWSAthenaがこれらのクラスからデータを取得できないかどうかがわかります。
- Athenaはストアドプロシージャをサポートしていません。
- Athenaバージョン1は、パラメーター化されたクエリをサポートしていません。 これは、Athenaバージョン2でサポートされています。
- MERGE、UPDATE、CREATE TABLE LIKE、
DESCRIBE INPUT
、DESCRIBE OUTPUT
などのステートメントはサポートされていません。
結論
この記事では、AWSのデータ分析ツールであるAWS Athena、その機能、利点、およびいくつかの制限について説明しました。 Athenaは、S3バケット内のデータを処理および分析するための最も強力なツールの1つです。 サービスの制限でさえ非常に単純であり、必要に応じて回避することができます。
また、AWSS3ストレージを保護するためのいくつかのベストプラクティスを確認することもできます。