IICSでGoogle Cloud Storageに接続してみる

Informatica Intelligent Cloud Services(IICS)のコネクタを使用して、Google Cloud Storage(GCS)に接続する。
2021.02.01

データアナリティクス事業本部、池田です。
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 IDclient_emailService Account Keyprivate_keyProject IDproject_id の値を設定します。

ちなみに、前章で触れた storage.buckets.list 権限が無いと、 接続のテスト時に↓のようなエラーになりました。 (次章のマッピングを作るところでも似たようなエラーになりました。)

動かしてみる

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

名前をつけます。


ソース側の設定をしていきます。ガイドは こちら

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

Is Directory については ガイドに説明 があり、要は「一度に子のフォルダまでは読まないよ」「全て同じレイアウトのファイルにしてね」って感じのようです。

「データのプレビュー」をすると、↓こんな感じ。


ターゲット側も設定します。ガイドは こちら

同様に、作成したGCSの接続を指定し設定します。

オブジェクト は「選択」ボタンから新規作成にしました。


保存して、実行してみます。

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

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

↓想定のフォルダにParquetファイルに変換されて出力されていました。

(↑ ParquetViewer を使って中身を確認しています。)

おわりに

行数多めのデータで試してみましたが、無事GCSとやり取りができました。 ファイルの形式変換も設定だけでできたのは楽で良いですね。

参考文献