AWS:Amazon Athenaについて
みなさん、おはようございます。ちゃみみです。
本日は、Athenaについて資格対策向けにブラックベルトの内容を簡単にまとめてみようと思います。
【概要】
Amazon S3にあるデータ(もしくは様々なデータソース)に対して標準SQLを使用して簡単に分析を行うクエリサービス
→S3と連携というあたりがポイントかな。S3→Athenaの構図は覚えておきましょう
【特徴】
・サーバレスで管理不要
・大規模データに対しても高速なクエリ
・事前のデータロードなしにS3に直接クエリできる
・スキャンしたデータに対して従量課金する
・JDBC/ODBC/API経由でBIツールやシステムと連携できる
【ユースケースについて】
・アナリストによる分析
アナリスト→S3バケット→Athena→BIツール
・ログ分析
AWSサービスなど→S3→Athena
などなど
【Athenaのデータ対応形式】
・CSV
・TSV
・カスタム区切り
・JSON
・Apache Avro
・ORC
・Apache Parquet
・Logstashログ
・Apacheログ
・Cloudtrailログ
【Athenaの実行】
・コンソールから実行
・JDBC、ODBCドライバー経由での実行
・Athena API経由での実行
【Athenaパフォーマンスの維持について】
・スキャンデータを減らすこと(←クエリ速度向上できる)
・スキャンするファイルを一定サイズ以上にまとめること(←128MB以上にまとめる、少量のものが大量にあるとファイル操作のオーバーヘッドが大きいため)
・スキャンするファイルを分割可能な形式とすること(複数のワーカーが並列処理を行う都合上、分割可能な形式であったほうが効率がよい)
【Athenaクエリのいろいろ】
・CTAS(Create Table As Slect)
→クエリ結果をもとに新しいテーブルを作成する
・Insert Into
→クエリ結果をもとに既存のテーブルにデータを追加する。(制約として、パーティションの最大数は100)
・View
→クエリ内容自体を仮想的なテーブルとして登録する
・地理空間データの分析
→2点間の距離を計算するときや、A地点にB地点のが含まれているか?どうか?をチェックするときなどに利用する
・Seletct $path / Where %path
→予期しないデータの調査や、ソースデータに関する情報を必要とする場合に利用可能
・Amazon Athena Federated Query
→Lambdaで動作するコネクタを利用して実行するもの
・UDF(User Difined Function)
→ユーザー独自のスカラー関数をUDFとして定義して、SQLクエリで呼び出す
・Machine Learning with Amazon Athena
→Athena SQLクエリでSageMakerMLモデルを呼び出し、推論を実行可能
【パフォーマンスチューニング】
◆データ最適化
・列試行の考え方:メリットとしてOLAP系の分析クエリを効率的に実行できることやI/O効率が上がることが挙げられる。
・データ圧縮:最低限分割可能な圧縮形式にしておくと分散処理が可能となるため、効率が上がる。
圧縮形式は、以下。
1.SNAPPY:分割可能
2.ZLIB:分割可能
3.GZIP:分割NG
4.LSO:分割可能
5.BZIP2:分割可能
◆データレイアウトの最適化
・パーティションの利用(頻繁に使われるカラムをキーに指定する):S3のオブジェクトキーの構成をCreateTableに反映する
・パーティションプロジェクション:非常に多くのパーティションがあるテーブルに対するクエリ処理を高速化し、パーティション管理を自動化することが可能となる。
◆クエリの最適化
・Order byを最適化する
・Joinを最適化する
・GroupByを最適化する
・Like演算子を最適化する
・近似関数を使う
・必要なカラムだけを読み込む(できるだけ*を使わない)
【Athenaの運用管理】
◆Workgroupsを利用する
→仮想的なワークグループを作成することが可能でワークグループごとに、クエリのワークロードの分離、メトリクスの分離、クエリ毎のスキャン量上限設定を実施することが可能となる。
◆EventBridgeを利用する(クエリの監視のため)
→EventBridgeを使用することでリアルタイムの通知を受け取ることが可能となる。また発行されるイベントによって例えば、クエリが成功した際にLambdaを呼び出して後続処理を実行したり、クエリ失敗時には、アラート通知をするなど。
◆Athenaのロギング
→基本的にはCloudtrailに統合される形となる。すべてのAPIコールをイベントとしてキャプチャしている。
【暗号化】
◆保管時の暗号化
方式として以下。
・SSE-S3
・SSE-KMS
・CSE-KMS
暗号化方式は、クエリと保存とで別々のものを指定することができる
◆転送時の暗号化
転送時のデータにTLS暗号化を使用することで可能
【権限管理】
・Glue Data Catalogを使うことでIAMユーザーやロールに対してテーブル単位でのアクセス権限を設定することが可能
・ただしGlue Data Catalogはメタデータ管理しかしないのでS3へのアクセスをバケットポリシーで制限する必要があることは注意が必要
※AthenaもVPCエンドポイントの利用が可能
【制約】
・Athenaは今のところ、S3については使えるがGlacierに対しては利用できない
・Athenaのクロスリージョンも利用不可となっている。
2021年11月03日
以下、宣伝です。
仲間も募集中なので、気になる方は↓の記事を覗いてみてくださいませ。
いい会社だと思いますよ。