[Alteryx]Output Dataツールを使用したRedshiftへのデータロードを比較する
はじめに
こんにちは、yokatsukiです。
本エントリは、以前の投稿の続きです。
上記エントリではRedshiftへのデータ出力にOutput Dataツールからバルクロード(Redshift Bulk...)機能を使いましたが、その他の設定について比較検討してみます。
検証環境と設定
検証に使用した環境は以前の投稿と同じですが、念のため下記示します。
環境
- MacBook Pro (Retina, 13-inch, Early 2015)
- macOS Sierra 10.12.5
- Windows 10 Pro 64bit on WMware Fusion 8.5.7
- Alteryx Designer x64 11.0.6.28907
- Amazon Redshift ODBC Driver x64 1.3.1.1000
- Amazon Redshift 1.0.1351
- dc1.large 2nodes
入出力データ
入力
- Tableau社提供のサンプルデータ「Superstore」の日本語版を変換したテキストファイル
- Superstoreサンプルデータ(不具合修正版) | Tableau Community
- ファイル名 "0-Sample - Superstore Sales Japan-2013(revised).txt"
- 8370行(先頭1行は見出し)
- UTF-8
- タブ区切り
- BOMあり
- 改行コードCRLF
出力
- Redshiftテーブル "cm_yokatsuki.orders"
- ODBCデータソース名 "Alteryx test"(以下情報含む)
- Redshiftクラスタエンドポイント名
- 接続ポート番号
- データベース名
- ログインユーザ名/パスワード
- データ転送ルール(1行毎か丸ごとか、等)
Output Dataツールの設定
Input Dataツールでファイルを読み込む設定までは以前の投稿と同じです。今回はOutput Dataツールにおいて、Redshift Bulk...の設定とは別の、汎用的なODBC接続設定を使用します。
Input Dataに続く形でOutput Dataツールを配置し、今回はODBC...を選択します。
ODBC接続情報は、設定済みのAlteryx testを流用します。
テーブル名は、以前と同じcm_yokatsuki.ordersとします。
設定ができました。出力のRedshiftテーブルに対する設定は、バルクロードと同じようです。テーブルの自動作成、プライマリキーの設定、分散キーの設定項目が確認できます。
ワークフローの実行
設定したワークフローを実行します。進行状況を表すメーターが表示されるのですが、やたら遅いです…。
AWS管理コンソールから、Redshiftへ実行されているクエリの状況を確認すると、おびただしい数のINSERT文が発行されています。
バルクロードの際には30秒程で終わった処理が、待てども待てどもなかなか終わりません。
結局、ロード完了まで30分程掛かってしまいました。
まとめ
同じOutput Dataツールを用いて、設定の違いによる挙動の違いを確認しました。
汎用的なODBCを使用したデータ出力は、内部的に1接続でINSERT文をひたすら繰り返し実行することがわかりました。Redshiftをロード対象とした場合は、AWSのドキュメント記載の通り、ロード性能が上がらない、という結果となりました。
Redshiftへのロードをする際には汎用ODBC出力は避け、バルクロードを選ぶということで覚えておきましょう。それでは、また。