Amazon Redshiftと連携してみる

Avatar
dstn


皆さん、こんにちは。アプレッソ技術部の友松です。

最近何かと話題なAmazonウェブサービスさんから遂にでましたね。
高速で拡張性が高く、それでもってすぐに使えるというDWHサービス「Redshift」。
しかもこの度東京リージョンでも使えるようになりました!
いろいろといじってDataSpiderと連携検証をしてみましたのでその手順をご紹介します。

Amazon Redshiftとは


Amazon Redshiftはシンプルで費用対効果の高いデータウェアハウスサービスです。
詳しくは こちらをご覧ください。

特徴は以下かなと思っています。
・拡張性が高い
・高速(カラムナ型)
・低額(従量課金)
・耐久性・可用性が高い

DWHというと性能面を理由にハードウェアも合わせてアプライアンスという形で提供されている場合が多く、そのためコストもかかるという印象でした。本格的なDWH分析基盤のようなものを構築する場合にはメンテナンス性などを考慮すると費用対効果は充分にあると思いますが「今あるデータを一度だけ分析させたい」「効果があるか試験的に導入してみてみたい」といったニーズは利用しにくいのが現状だったと思います。そのような所謂クラウド的な利用に最適なサービスがこのRedshiftです。

Redshiftはクラウドサービスですので、数回のクリックで簡単に環境が構築できます。また使いたい時だけ起動をさせておき必要なくなったらスナップショットを作成して起動を停止させておくことが可能です。また、拡張性も高くノードを増やすことが簡単にでき数PBまで拡張可能です。

このようにRedshiftはクラウドサービスの利点を特徴にもつ、まさにクラウド時代のDWHサービスと言えます。

Amazon Redshiftとの連携


それではRedshiftと連携してみたいと思います。
ただ連携手順を並べても面白く無いと思いますのでちょっとしたシナリオを考えてみました。

シナリオ
これまた最近注目されているオープンデータというやつを使ってちょっとした分析をしたいということで、以前に エントリーも書いている東京都の降雨量を連携させたいと思います。過去1週間分の降雨量情報をRedshiftに投入して地域ごとに降雨量を集計してみたいと思います。

事前準備
RedshiftはPostgreSQLドライバを経由して外部ツールから接続することができます。
事前にJDBCドライバをダウンロードしておきます。推奨はPostgreSQL 8.xのドライバです。
DataSpiderではJDBCアダプタ経由で接続しますのでダウンロードしたドライバはJDBCアダプタのフォルダに配置してください。
(詳しくはヘルプをご確認ください。)

Redshiftの準備
Redshiftのアカウントの設定は他サイトで紹介されていますので参考に作成してください。
今回はSinglenodeでNodetypeはdw.hs1.xlargeにしました。

Amazon Redshiftと繋いでみる -1-


Amazon Redshiftとの連携方法は2つあります。具体的には以下の2つです。
a.JDBC/ODBCドライバを経由しての接続
b.Amazon S3にロード用のファイル(CSV)をアップロードしてRedshiftでロード

どちらの方法もDataSpiderで実現可能ですが、bの方法がイメージがわきづらいかもしれないですね。
以下のようなイメージになります。
redshift1

事前にCSVなどデリミタ文字で区切られるデータファイルを作成します。このファイルをS3へアップロードします。次にRedshiftに対してCOPYコマンドを発行します。このCOPYコマンドはJDBC/ODBC経由でSQLで実行可能です。

COPYコマンドの記述方法

COPY <テーブル名> FROM '<s3パス ex:s3://DEMO/in.csv>' CREDENTIALS 'aws_access_key_id=;aws_secret_access_key=' DELEMITER '<デリミタ文字>';


ということで今回はこのCOPYコマンドを利用して接続したいと思います。

接続設定
まずRedshiftへの接続ですが、JDBC URLがRedshiftのConfigurationに表示されますのでこちらを利用します。
redshift2

ということでJDBCアダプタの接続先を以下のように設定します。
redshift3

またS3にも接続しますのでS3の接続設定も作成します。以下のように設定します。
redshift4

Amazon Redshiftと繋いでみる -2-


ということでいきなり完成スクリプトです。料理番組みたいですね。実は作ってありました的な。
redshift5

前段の処理は以前にご紹介した降水量を取得する処理です。詳細は こちらをご覧ください。今回は場所は指定せずに東京都内すべての観測所のデータを取り込むようにしました。また、過去1週間のデータをまとめるように設定してあります。

データさえできちゃえば後は簡単ですね。赤枠の部分が今回追加した処理。
S3にファイルをアップロードする設定です。
redshift6

JDBC経由で接続してCOPYコマンドを実行している処理です。
redshift7

これで完成です。実行してみるとあっという間にデータが取り込まれていきます!
DataSpiderのスケジュールトリガーを使えば毎週情報を取り込むような定期な設定も可能ですね。

まとめ


今回はデータの格納だけのスクリプトを作成しましたがこのデータをJDBC経由で取得してExcelやBIツールなどに出力をしてデータの活用をしていくということも可能です。

DWHは性質上必ずデータの収集が必要です。収集はプログラム開発をしていたら分析対象にしたいデータリソースが増える度に追加開発が必要になり非常に煩雑になります。是非DataSpiderのようなノンプログラミングツールを利用して楽して繋いでいってください。せっかくAmazon Redshiftが簡単なのでつなぐところも簡単に。

コメント

ログインしてコメントを残してください。

Powered by Zendesk