2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Amazon Redshiftに触れてみる

Posted at

はじめに

本投稿はAWS Hands-on for Beginnersの「手を動かしながら学ぶAnalyticsサービス入門」で実施した内容のアウトプットになります。
次月から業務でRedshiftを利用するかもしれなかったので、実施してみました。
とりあえずRedshiftを触ってみたかったので、QuickSightのハンズオンは省略しています。
※ハンズオン資料が公開されたのは2021年なので古い箇所があります。

★AWS Hands-on for Beginners資料リンク

Redshiftってなに?

Redshiftとは、AWSが提供するフルマネージド型のデータウェアハウスサービスです。
RDBMSなどの行指向データベースと異なり、列指向のデータベースという特徴があります。
これは、効率的に分析や集計処理がしやすい仕組みであり、データを分析することに特化したサービスであるということがわかります。

Redshiftは「ノード」と呼ばれるコンピューティングリソースの集合で、「クラスター」というグループを構成します。
さらにクラスター内部では、リーダーノードと1つ以上のコンピューティングノードを持ちます。
リーダーノードがクライアントアプリケーションからクエリを受け取り、コンピューティングノードで処理します。
2022年には、クラスターまたはノードの概念がなく、自動的にスケーリングを行ってくれるAmazon Redshift Serverlessというサービスがリリースされています。

★参考

ざっくりの実施内容

  • ハンズオンで利用するIAMロールを作成する
  • Redshiftクラスターを作成する
  • S3バケットを作成してデータを格納する
  • RedshiftクラスターにS3のデータをロードする
  • Redshiftに対してクエリを実行する

実際やったこと

①IAMロールの作成

Redshiftクラスターにロールを関連付けることができ、ロールの権限に基づいてデータのロードやアンロードを行うことができます。
本ハンズオンでは、S3からRedshiftにデータをロードするため、S3ReadOnlyAccessの権限を持ったロールを作成します。

ユースケースからRedshiftを選択し、ポリシーを直接アタッチします。
スクリーンショット 2024-12-27 153223.png
スクリーンショット 2024-12-27 153241.png

②Redshiftクラスターの作成

Redshiftのクラスターを作成します。
Severlessは無料トライアル枠があるので、そちらを利用したほうがいいかもしれません…。
ゴリゴリ検証するわけではないので、クラスターのサイズは一番格安のノードタイプと最小のノード数にしました。
スクリーンショット 2024-12-27 160224.png

データベース設定では、接続に利用する管理ユーザとパスワードを設定します。
image.png

暗号化設定は、クラスターの暗号化有無を指定します。
今回は、AWS KMSのAWS管理キーを利用した暗号化を利用する設定にしておきました。
カスタマー管理キーの利用があればそちらにしてください。
スクリーンショット 2024-12-27 160241.png

IAMロールを関連付けるという項目から先ほど作成したIAMロールを選択して関連付けます。
スクリーンショット 2024-12-27 160250.png

追加設定の箇所は、今回はそのままにします。
デフォルト以外の特定VPC/サブネットに配置する場合や、セキュリティグループを作成したい場合、バックアップの設定など、カスタマイズしたい場合は設定を行います。
スクリーンショット 2024-12-27 160313.png

「クラスターを作成」を押下してしばらくするとクラスターの状態がAvailableになって作成が完了します。
スクリーンショット 2024-12-27 160538.png

③S3バケットを作成してデータを格納する

S3バケットを作成してサンプルデータをアップロードします。
バケット名はグローバルで一意の名称にする必要があるのでご注意ください。
スクリーンショット 2024-12-27 160949.png
スクリーンショット 2024-12-27 161046.png

④RedshiftクラスターにS3のデータをロードする

先ほどS3に格納したデータをRedshiftクラスターにロードします。
今回は、「Redshift query editor v2」を利用してデータのロードを行いました。
v2の利点の一つとして、複数ステートメントのクエリ実行を行えることが挙げられます。
テーブルの作成と、データのロード、ロードの確認で複数のクエリを一度に実行したかったのでv2側を利用しました。

開くとこんな画面になります。
スクリーンショット 2024-12-27 161943.png

左側のペインには作成したRedshiftのクラスターが表示されているため、選択して接続します。
今回は、ユーザ名とパスワードを使って接続します。
ここで利用するユーザ名とパスワードはRedshiftクラスター作成時に指定したものです。
スクリーンショット 2024-12-27 162041.png

接続ができたら、データをロードする前にテーブルの作成を行います。
こんな感じで複数クエリを実行します。
スクリーンショット 2024-12-27 162344.png

結果は、クエリごとにタブが分かれて表示されます。
スクリーンショット 2024-12-27 162355.png
左側のペインのRedshiftクラスター名を開いていくと作成したテーブルが表示されていることがわかります。
特段指定がないとテーブルはpublicというデフォルトスキーマに作成されます。
スクリーンショット 2024-12-27 162434.png

テーブルの作成が完了したらS3のデータをRedshiftクラスターにロードします。
ここでは先ほど作成したS3ReadOnlyAccessのポリシーをアタッチしたIAMロールのARNを指定してください。
image.png

しばらくするとロードが完了します。
image.png

★[参考]COPY構文

★[参考]データのロードにおけるベストプラクティス

⑤Redshiftに対してクエリを実行する

データがロードできたので、クエリを実行してみます。
無事、サンプルデータをもとにデータが集計できました。
スクリーンショット 2024-12-27 164431.png
スクリーンショット 2024-12-27 164448.png

おわりに

今回はクラスターの作成からクエリエディタを利用してデータのロードとクエリの実行を行うことができました。
クラスターやノードの概念があるプロビジョニングタイプの利用だったのですが、その概念がないServerlessも試してみたいなと思いました。
Glueを使ってETLの部分も今後チャレンジしてみたいと思います。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?