Cloud Data FusionでAWSのPostgreSQLからBigQueryにつなげてみた
※本記事の内容は実用レベルの構成・実装ではなく、あくまでも「AWS上のPostgreSQLとBigQueryつながったぞー」というだけですのでご注意ください。
よくある問題
- WebアプリのデータはPostgreSQLにある
- アプリのデータをBigQueryにバックアップしたい
Cloud Data Fusion を使えばいけるのでは?(´∀`*)
今回やること
- AWS上にあるPostgreSQLからGCPのBigQueryに、Cloud Data Fusionを使ってデータを持ってくる
事前に必要なこと
こちらの手順を参照し、以下を準備してください。
- プロジェクトの用意(既存のプロジェクトを利用することもできますが、試した後に削除しやすいので新規にプロジェクト作成をオススメします)
- プロジェクトのbillingが有効であること
- Cloud Data Fusion APIが有効であること
- AWSの Amazon RDS でPostgreSQLのDBがセットアップ済みであること(※外部から接続可能な設定であること)
- Cloud Data Fusionのインスタンスが作成済みであること(※10〜20分程度かかります)
- パーミッションが設定済みであること
PostgreSQL to BigQueryのパイプラインを作成する
PostgreSQLのJDBCドライバーをセットアップ
Cloud Data FusionのGUI画面から、「HUB」をクリックし、PostgreSQL JDBC Driver を選択します。 (jre7とjre8の2パターンありますが、今回はjre8の方をセットアップします)
書いてあるとおりの手順で進めます。
- Download PostgreSQL JDBC Driver: Download
- PostgreSQL Driver Plugin: Deploy
手順1の Download PostgreSQL JDBC Driver: Download
を行います。PostgreSQLの公式サイトのリンクから postgresql-9.4.1211.jar
というJARファイルをダウンロードします。そして「Finish」をクリックします。
手順2で、ダウンロードしたJARファイルをアップロードします。そして「Next」をクリックします。
ここの設定はデフォルトのままで、「Finish」をクリックします。
PostgreSQLのDBとの接続確認
まず先にPostgreSQLへの接続確認をすることです。通常の手順と少し異なるかもしれませんが、この方法の方が確実にデータソースとの疎通確認ができるのでオススメです。
Cloud Data FusionのGUI画面の左サイドバーから、「Wrangler」を選択します。
以下のようにデータソースの一覧画面が表示されます。最下段の「Add Connection」をクリックすると、新たにデータソースを追加することができます。
今回はPostgreSQLと接続するため、「Database」を選択します。
Driver Installed と表示されている、さきほどセットアップしたPostgreSQLを選択します。
接続設定の画面が表示されるので、AWSのPostgreSQLの設定情報等を入力します(※このPostgreSQLのDBが外部から接続可能な設定にしておいてください。In-boundネットワーク周りの設定が必要だと思います)。
「Test Connection」をクリックした後に「Database」を選択できるようになります。
最後に「Add Connection」をクリックします。
これで疎通確認は完了です。
パイプラインの作成
一つ前の手順でテーブルの情報が表示でき、その右側に「Create a Pipeline」というのがあるのでこれをクリックします。
「Batch pipeline」を選択します。
これでテンプレートのパイプラインが作成できました! 右側の「Wrangler」はデータ前処理や変換用のノードなので、今回は不要なので削除してしまいます。
「Wrangler」ノードの右下から「Delete」をクリックして削除します。
その代わりに左のサイドバーの「Sink」からBigQueryをクリックします。
以下のようにノードを矢印でつなげます。 (※まだBigQueryノード側を設定していないので、黄色でwarningが表示されていますね)
Databaseノードの設定
「Database — user」にホバーすると「Properties」が表示されるのでこれをクリックします。
プロパティ画面が表示されるので、右側の「Output Schema」を入力します(※Import/Exportすることもできます)。
例)以下のようにPostgreSQLの入力テーブルのカラムに従って入力します。
BigQueryノードの設定
次にBigQueryノードの設定をします。
「Basic」の設定部分のみ任意で入力します。
パイプラインに名前をつける
左上辺りのバーからパイプラインの名前を設定します。
パイプラインのデプロイ
最後に右上のバーから「Deploy」をクリックします。
デプロイ中です。
パイプラインの実行
デプロイが完了すると以下のGUIに画面遷移します。
中央上部の「Run」をクリックして、パイプラインを実行してみましょう。
少し時間がかかりますが、最後にStatusが Succeeded になれば成功です!
BigQueryの対象テーブルにデータが入っているはずです(´∀`*)