Redshift使いになるためにAWS Redshift Analytics Lab のワークショップを実施してみた
AWSの公式が提供しているRedshift関連のワークショップがあったので、実施してみました。
実施した流れと、躓きポイントをまとめています。
綺麗にまとめていないですが、同じく実施しようと思っている方の参考になれば嬉しいです。
Overview
構成
ELTのパイプラインとRedshiftを使った継続的な分析基盤を作っていく。
利用するサービスは以下。
Redshift, StepFunction, Glue, Secrets Manager, Quicksight, Sagemaker, S3
ワークショップの予定
-
Launch
セクションにて、CloudFormationのテンプレートからデプロイを行う - ELTプロセスで利用するQuickSightとSagemakerを用意する。また、Glue jobも用意する。
-
Run Transformation
セクションにて、ELTパイプラインを起動する。その後、Glueクローラーが作成される。クローラーは、RedshiftからS3にエクスポートされたデータを、データカタログに登録する。 -
Analytics
セクションでは、QuickSightとSagemakerからRedShiftに接続した方法を説明する。
Launch
CloudFormationのスタックを作成する。
Setup
Credential
Secrets Manager に自動でRedshiftのユーザー名やパスワードを保存するようになっているので、Secrets Managerから該当の値を取得する。
Amazon Redshift Table Setup
Clusters
DC2[1]のノードタイプでRedshift Clusterが作成されている。
Redshift Clusterに紐づけられたIAMロールのARNを取得する。
Editor
先ほどSecretsManagerにて取得したPasswordを利用してクエリエディタ[2]を開く。
手順に沿って、クエリを実行する。
nyctaxiの配下にスキーマが確認できればOK (画像はクエリエディタv2)
Glue job
Edit Glue connection
今回のGlue jobはPythonシェルで書かれている。
今回の構成では、シークレットマネージャーから値を取得してRedshift Clusterにログインし、SQLを実行する。
SQLはS3に保存されている。
左メニューの Data Catalog > Connections に入る。
パスワードを入力するように書かれているが、元から入力されているので特に変更なしで次に進む。
Edit Glue job
新しいジョブエディタでは、以下のように表示される。
Job detailsのタブを選択し、ワークショップの進行に沿って進んでいく。
Transformation Code
コードの説明をしてくれるみたいです。
Glue Job
自作のPythonライブラリを使用することが出来る。
今回のワークショップでは、Secrets ManagerとRedshiftを呼び出すことができるライブラリを使用している。
Redshift SQL
SQL文が載っているだけ。
Step Function Code
Step Functionを構成するjsonが載っているだけ。
Run Transformation
Step Functionを利用して、RedshiftへのIngestion[3]とS3へのUnload[4]を行う。
Run ELT
手順に沿って行う。
躓きポイント
StepFunction実行時に以下のエラーが出た。
"ProgrammingError: ERROR: relation \"taxischema\" does not exist"
確認してみると、前の手順で間違えていたことが分かったので修正した。
間違えた内容: 3. Setup > Amazon Redshift Table setup
にて、nyctaxi
のDBに対してSQLを実行するところを、誤ってdev
のDBに対して実行していた。
Run Crawler
手順通り行う。
躓きポイント
若干分かりにくいのは、クローラー作成後、手動実行する必要があるということ。
Analytics
BI Analytics
QuickSightで可視化する手順。
!!躓きポイント!!
QuickSightからRedshiftに接続を試みるも、タイムアウトとなってしまう。
セキュリティグループDataEngLab-RedshiftQuickSightSG-<UUID>
を確認してみると、東京リージョンのQuickSightからの接続を許可していない様子。
https://docs.aws.amazon.com/ja_jp/quicksight/latest/user/regions.html
こちらを参考に、東京リージョンのIPアドレス範囲 13.113.244.32/27
を許可するようにインバウンドルールに追加する。
この後、無事接続が成功した。
ML Analytics
Jupyter Notebookを活用して、どんどん進んでいきます。
お掃除
ワークショップの手順に書いていないのでお忘れなく。
- QuickSightの諸々を削除
- Sagemakerの諸々を削除
- S3のバケットを空にする
- CloudFormationのスタックを削除
感想
一応流してワークショップを終えることは出来ました。
RedshiftのSQLクエリやGlueのクローラーの仕様など、分かっていないことが多いので、別途座学として調べていこうと思います。
Discussion