
IICSでGoogle Cloud Storageに接続してみる
この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
データアナリティクス事業本部、池田です。
Informatica Intelligent Cloud Services(以下IICS)からGoogleのストレージである
Cloud Storage (以下GCS)の
コネクタ
を使ってみます。
GCP側の準備(サービス アカウントの作成)
ガイドのこの辺
を参考にGoogle Cloud Platform(GCP)の
サービス アカウント
を作成します。

作成後の画面で、IICSに設定するための鍵(JSONファイル)を追加・ダウンロードしておきます。

作成時に、 ロール
には ストレージ管理者 を指定しました。
「IAMと管理」>「IAM」からロールの確認と変更ができます。

オブジェクトの閲覧と作成(今回はGCSからファイルを読んで、GCSに書き出します)の権限に加え、
storage.buckets.list 権限が必要になるので、今回は検証目的ということでストレージ管理者を付与しました。
実際の開発では、 カスタムロール
を作成するなど、もう少し細かい管理をした方が良さそうです。
使用するGCSのファイル
使うバケットは、↓こんな感じです。

今回は BigQuery の一般公開データセット
から出生データの natality サンプルテーブルをGCSへエクスポートして、
入力データとして使ってみます。
クリックでSQLを表示する/折りたたむ
EXPORT DATA OPTIONS(
uri='gs://{バケット名}/input/natality-*.csv',
format='CSV',
header=true,
field_delimiter=','
) AS
SELECT
source_year,
year,
month,
day,
wday,
state,
is_male,
child_race,
weight_pounds,
plurality
FROM `bigquery-public-data.samples.natality`;
input フォルダに 137,826,763 行のCSVデータが69ファイルに分割されて配置されています。
今回はIICSを使ってこのデータを Parquet形式
に変換して、同じバケット内の output フォルダに書き出してみます。
接続してみる
コネクタの有効化
「アドオンコネクタ」からコネクタを有効化します。

接続の作成
Google Cloud Storage V2 connection properties
を参考に接続を作成します。

ランタイム環境 は Hosted Agent
が 使用できる
そうなので、それを使ってみます。
前章で作成した鍵のJSONファイルからそれぞれ、
Service Account ID → client_email 、
Service Account Key → private_key 、
Project ID → project_id の値を設定します。
ちなみに、前章で触れた storage.buckets.list 権限が無いと、
接続のテスト時に↓のようなエラーになりました。
(次章のマッピングを作るところでも似たようなエラーになりました。)

動かしてみる
マッピングを使って処理をしてみます。

名前をつけます。

ソース側の設定をしていきます。ガイドは こちら 。
作成したGCSの接続を指定し、 オブジェクト からバケット上のファイルを指定します。
ただし、今回は単一のファイルではなく、フォルダ配下をまるっと読み込みたいので、
下部の詳細フォームの Is Directory を有効にします。

Is Directory については ガイドに説明
があり、要は「一度に子のフォルダまでは読まないよ」「全て同じレイアウトのファイルにしてね」って感じのようです。
「データのプレビュー」をすると、↓こんな感じ。

ターゲット側も設定します。ガイドは こちら 。
同様に、作成したGCSの接続を指定し設定します。

オブジェクト は「選択」ボタンから新規作成にしました。
保存して、実行してみます。

「マイジョブ」から結果を確認できます。

30分ちょっとかかりましたが成功しました!
(所要時間は、今回ファイル数が多いことや、Hosted Agentを使用していることが影響しているかもしれません。)
「成功した行」の数も元のデータと一致しています。
↓想定のフォルダにParquetファイルに変換されて出力されていました。

(↑ ParquetViewer
を使って中身を確認しています。)
おわりに
行数多めのデータで試してみましたが、無事GCSとやり取りができました。 ファイルの形式変換も設定だけでできたのは楽で良いですね。






