🦞

Redshift使いになるためにAWS Redshift Analytics Lab のワークショップを実施してみた

2022/07/27に公開

https://redshift-analytics.workshop.aws/intro.html

AWSの公式が提供しているRedshift関連のワークショップがあったので、実施してみました。
実施した流れと、躓きポイントをまとめています。

綺麗にまとめていないですが、同じく実施しようと思っている方の参考になれば嬉しいです。

Overview

構成

ELTのパイプラインとRedshiftを使った継続的な分析基盤を作っていく。
利用するサービスは以下。

Redshift, StepFunction, Glue, Secrets Manager, Quicksight, Sagemaker, S3

ワークショップの予定

  1. Launch セクションにて、CloudFormationのテンプレートからデプロイを行う
  2. ELTプロセスで利用するQuickSightとSagemakerを用意する。また、Glue jobも用意する。
  3. Run Transformation セクションにて、ELTパイプラインを起動する。その後、Glueクローラーが作成される。クローラーは、RedshiftからS3にエクスポートされたデータを、データカタログに登録する。
  4. 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のクローラーの仕様など、分かっていないことが多いので、別途座学として調べていこうと思います。

脚注
  1. 現在ノードタイプは、DC2とRA3が主要な選択肢になる。 ↩︎

  2. 現在は「クエリエディタv2」を使用することが出来る。こちらを使用する場合は、データベースに接続する際に”Database user name and password”を選択してワークショップの手順を実施できた。 ↩︎

  3. Redshiftにデータを取り込む ↩︎

  4. S3にデータを出力する ↩︎

Discussion