【AWS学習記録】Athenaのクエリパフォーマンスを上げる方法など

本日勉強したことをメモします。

Athenaのクエリパフォーマンスを上げる方法

S3に保存されているデータ容量が増えるにつれ、Athenaのクエリパフォーマンスが落ちる場合は以下のような対策が考えられる。
・頻繁に使うクエリ内容に応じてパーティションを作成する。
・S3に置いているファイルがCSV形式の場合はApache Parquet形式に変更する。

ウインドウクエリについて

https://docs.aws.amazon.com/ja_jp/kinesisanalytics/latest/dev/windowed-sql.html

アプリケーションコードの SQL クエリはアプリケーション内ストリームに対して連続で実行されます。
アプリケーション内ストリームとは、アプリケーション内を常時流れる未バインドのデータのことです。
したがって、常時更新されているこの入力から結果セットを得るために、時間と行の条件で定義されるウィンドウを使用してクエリをバインドする場合が多くあります。
これらはウィンドウ SQL とも呼ばれます。

ウインドウクエリという概念を初めて知ったのでまだよくわかっていませんが、常時流れるデータの時間と行などの条件で範囲を指定してクエリを実行するような感じなのかと解釈しています。

また、ウインドウクエリには以下の 3種類があるそうです。

Stagger Windows: データが届くと開く、キー付けされた時間ベースのウィンドウを使用してデータを集計するクエリ。キーによって、複数の重なり合うウィンドウが可能になります。タンブリングウィンドウと比較すると、Stagger Windows は遅延データまたは順序通りでないデータを削減するため、これは、時間ベースのウィンドウを使用してデータを集約する方法として推奨されます。

タンブリングウィンドウ: 定期的に開閉する、個別の時間ベースのウィンドウを使用してデータを集計するクエリ。

スライディングウィンドウ: 固定時間または rowcount 間隔を使用して、データを継続的に集計するクエリ。

Redshift spectrumについて

docs.aws.amazon.com

Spectrumを使うことで、外部スキーマと外部テーブルを作成すればS3にあるファイルをSpectrumでみれるようです。

Amazon MSKについて

aws.amazon.com

Amazon Managed Streaming for Kafka(Amazon MSK)はフルマネージド型のApache Kafkaサービス。
Apache Kafkaが動いているサービスでAWSに移行したい場合はAmazon MSKを使うとコードの修正などが少なくて済む。

AWS GlueとAWS Fargateの料金

GlueとFargateではGlueの方が 10程料金が高くなるとのこと。

QuickSightのデータを最新にしておく

QuickSightのデータを最新にしておくには、QuickSightのPython SDKでCreateIngestion APIを使う。
データ変換の最後にこのコマンドを埋めておくことで自動的にダッシュボードが更新される。
新しいデータがデータソースに入った時にcreate-ingestionコマンドを使うことで、データ更新がトリガーされる。