前回の投稿では「Amazon Redshift」の環境を準備しました。
今回は「ASTERIA Warp」の「フローサービス」を使った連携を行なっていきます。
目次
Redshiftは、PostgresqlのJDBCで接続可能ですので、JDBCドライバを用意しASTERIA WarpのJDBCを保存するフォルダにコピーします。Windows環境の標準だと「C:\Program Files\asteriawarp\flow\lib\ext」です。
JDBCドライバはAmazonの解説で使用されていたものとバージョンを合わせ「postgresql-8.4-703.jdbc4.jar」にしました。
すでにASTERIA Warpが起動している場合は再起動が必要です。
フローデザイナーを起動してコネクションを作成します。
Postgresqlの接続と同様に、Redshiftで設定したサーバー、クラスタ名、ポート番号を含んだURLと、ユーザー名、パスワードを設定します。
「URL」は以下の様な形式です。
jdbc:postgresql://<クラスタ名>.<サーバーのアドレス>:<ポート番号>/<データベース名>
「AWS Management Console」からRedshiftのクラスター一覧を開き、内容を確認すると「JDBC URL」の欄がありますので、ここをそのまま記載するだけでOKです。
Redshiftと接続可能となったので、まずRedshiftにテーブルを作成します
SQLCallコンポーネントを使って通常のCREATE TABLE文でテーブルを作成します。
RedshiftはPostgresqlと完全互換ではないので、一部使えないSQLや使えない型があるようです。
Redshiftへのデータ転送はRDBPutコンポーネントを利用してInsertすることも可能ですが、大容量を扱うRedshiftでは同じAmazonのストレージサービス「S3」を利用して転送を行うことが推奨されています。
S3へのデータ転送はデータを分割して並列でアップロードすることによって高速化することが可能です。
RecordGetコンポーネントを使ってまとまった単位でループ、ParallelSubFlowコンポーネントで並列化します。
ParallelSubFlowで呼び出すサブフローはAWS S3putコンポーネントを使って保存するだけです。
S3へ複数ファイルとして保存されたデータはRedshiftからコピーコマンドを実行することによって取り込むことが可能です。フローとしてはSQLCallコンポーネントでコピーコマンドを実行するのみです。
コマンドはAmazonの資料を参照してください。
Redshiftからのデータ取得にはRDBGetコンポーネントを使用します。コネクションを設定したRDBPutコンポーネントをダブルクリックすると、SQLビルダーが起動されます。
画面操作でRedShiftのデータ集計、取得が可能です。
取得したデータは、Excelに取り込んだり、HTMLを生成して簡易BI画面を作ったりと様々に利用可能です。
是非ASTERIA WarpとRedshiftを活用してビッグデータを有効活用してください。
ASTERIA Warpシリーズ担当のシニアプロダクトマネージャー。ホワイトペーパーの執筆のほか、開発経験を活かしたASTERIA Warpを使ったデモ作成等を実施。
Related Posts
ASTERIA Warp製品の技術情報やTips、また情報交換の場として「ADNフォーラム」をご用意しています。
アステリア製品デベロッパー同士をつなげ、技術情報の共有やちょっとしたの疑問解決の場とすることを目的としたコミュニティです。