Redshift バッチソース

このページでは、Cloud Data Fusion で Amazon Redshift インスタンスから Google Cloud にデータを読み込む方法について説明します。Redshift ソースコネクタによって、Redshift データセットから BigQuery などの宛先にテーブルを同期できます。このコネクタによって、構成可能な SQL クエリを作成することもできます。

始める前に

  • Cloud Data Fusion バージョン 6.9.0 以降では、Redshift ソースがサポートされています。
  • Redshift ソースコネクタを構成する際には、既存の再利用可能な接続を選択するか、新しい 1 回限りの接続を作成できます。詳細については、接続を管理するをご覧ください。接続を再利用する場合は、次の点に注意してください。

    • 認証情報を提供する必要はありません。
    • 既存の接続には、インポート クエリの生成に使用されるスキーマとテーブル名の情報が用意されています。

プラグインを構成する

  1. Cloud Data Fusion ウェブ インターフェースに移動し、[Studio] をクリックします。

  2. [Realtime] ではなく、[Data Pipeline - Batch] が選択されていることを確認します。

  3. [ソース] メニューで、[Redshift] をクリックします。パイプラインに Redshift ノードが表示されます。[Studio] ページに Redshift ソースが表示されない場合は、Cloud Data Fusion Hub から Redshift ソースコネクタをデプロイします。

  4. ソースを構成するには、Redshift ノードに移動して [プロパティ] をクリックします。

  5. 次のプロパティを入力します。完全版リストについては、プロパティをご覧ください。

    1. BigQuery ノードのラベルを入力します(例: Redshift tables)。
    2. 接続の詳細を入力します。新しい 1 回限りの接続または再利用可能な既存接続を設定できます。

      新しい接続

      Redshift に 1 回限りの接続を追加するには、次の手順に従います。

      1. [接続を使用] をオフのままにします。
      2. [JDBC ドライバ名] フィールドに、ドライバの名前を入力します。Redshift では、CData と Amazon の 2 種類の JDBC ドライバがサポートされています。詳細については、JDBC ドライバをアップロードするをご覧ください。
      3. [ホスト] フィールドに、Redshift クラスタのエンドポイント(例: cdf-redshift-new.example-endpoint.eu-west-1.redshift.amazonaws.com)を入力します。
      4. 省略可: [ポート] フィールドに、データベースのポート番号(例: 5439)を入力します。
      5. Redshift データベースで認証が必要な場合は、次のようにします。

        1. [ユーザー名] フィールドに、データベースの名前を入力します。
        2. [パスワード] フィールドに、データベースのパスワードを入力します。
        3. 省略可: [引数] フィールドに、Key-Value の引数を入力します。CData ドライバを使用するには、RTK や OEMKey などの接続引数を指定します(該当する場合)。
        4. [名前] フィールドに名前を入力します(例: SN-PC-Source-01-01-2024)。
        5. [データベース] フィールドにターゲット データベース名を入力します(例: datafusiondb)。

      再利用可能な接続

      既存の接続を再利用する手順は次のとおりです。

      1. [接続を使用] をオンにします。
      2. [接続を参照] をクリックします。
      3. 接続名をクリックします。

      4. 省略可: 接続が存在せず、再利用可能な新しい接続を作成する場合は [接続を追加] をクリックし、本ページにある [新しい接続] タブの手順をご参照ください。

    3. [クエリをインポート] フィールドに、Redshift ソースのスキーマとテーブル名を使用してクエリを入力します(例: Select * from "public"."users")。

    4. 省略可: 境界クエリや分割数などの [詳細] プロパティを入力します。プロパティの説明については、プロパティをご覧ください。

  6. 省略可: [検証] をクリックして、見つかったエラーに対処します。

  7. [閉じる] をクリックします。プロパティは保存され、Cloud Data Fusion ウェブ インターフェースで引き続きデータ パイプラインを構築できます。

プロパティ

プロパティ 自動化用のマクロに対応する 必須プロパティ Description
ラベル × データ パイプラインのノードの名前。
接続を使用 × いいえ ソースへの接続を参照します。[接続を使用] がオンになっている場合、認証情報を提供する必要はありません。
接続 はい 使用する接続の名前。 [接続を使用] が選択されている場合、このフィールドが表示されます。データベースとテーブルの情報は、接続によって提供されます。
JDBC ドライバ名 はい はい 使用する JDBC ドライバの名前。[接続を使用] が選択されていない場合は、このフィールドが表示されます。
ホスト はい はい Amazon Redshift クラスタのエンドポイント。[接続を使用] が選択されていない場合は、このフィールドが表示されます。
ポート はい いいえ Redshift が実行されているポート。[接続を使用] が選択されていない場合は、このフィールドが表示されます。
Username はい いいえ 指定したデータベースに接続するためのユーザー ID。[接続を使用] が選択されていない場合は、このフィールドが表示されます。
Password はい いいえ 指定したデータベースへの接続に使用するパスワード。[接続を使用] が選択されていない場合は、このフィールドが表示されます。
接続引数 はい いいえ 接続引数としての任意の文字列の Key-Value ペアのリスト。これらの引数は、追加の構成が必要な JDBC ドライバの接続引数として JDBC ドライバに渡されます。[接続を使用] が選択されていない場合は、このフィールドが表示されます。
参照名 × はい このソースを、リネージ、メタデータのアノテーション、その他のサービスのために一意に識別します。
データベース はい はい Redshift データベース名。データを選択するには、[データベースを参照] をクリックします。
クエリをインポート はい はい 指定したテーブルからデータをインポートするために使用する SELECT クエリ。
境界クエリ はい いいえ splitBy フィールドから最小値と最大値を返す SQL クエリ。例: SELECT MIN(id),MAX(id) FROM tablenumSplits が 1 に設定されている場合は不要です。
Split column はい いいえ スプリットの生成に使用されるフィールド名。numSplits が 1 に設定されている場合は不要です。
スプリット数 はい いいえ 生成するスプリット数。
サイズ はい いいえ スプリットごとに一度にフェッチする行数。フェッチサイズを大きくすると、インポートが速くなりますが、その一方でメモリ使用量は高くなります。指定しない場合は、デフォルトの 1000 が使用されます。

データ型マッピング

次の表は、Redshift のデータ型と対応する CDAP の型を示しています。

Redshift のデータ型 CDAP スキーマのデータ型
bigint long
boolean boolean
character string
character varying string
date date
double precision double
geometry bytes
hllsketch string
integer int
json string
numeric(精度、スケール)/ decimal(精度、スケール) decimal
精度 0 の numeric string
real float
smallint int
super string
text string
time [ (p) ] タイムゾーンなし time
time [ (p) ] タイムゾーンあり string
timestamp [ (p) ] タイムゾーンなし timestamp
timestamp [ (p) ] タイムゾーンあり timestamp
varbyte byte
xml string

おすすめの方法

Google Cloud から Redshift クラスタに接続する場合は、次のベスト プラクティスを適用します。

IP アドレスの許可リストを使用する

未承認のソースからのアクセスを防止し、特定の IP アドレスへのアクセスを制限するには、Redshift クラスタでアクセス制御を有効にします。

Redshift アクセス制御を使用している場合、Cloud Data Fusion でクラスタにアクセスするには、次の手順に従います。

  1. Redshift クラスタに接続する必要がある Google Cloud のサービスまたはマシンの外部 IP アドレス(プロキシ サーバー IP など)を取得します(IP アドレスの表示をご覧ください)。Dataproc クラスタの場合は、すべてのマスターノードと子ノードの IP アドレスを取得します。
  2. Google Cloud マシンの IP アドレスの受信ルールを作成して、セキュリティ グループの許可リストに IP アドレスを追加します。

  3. Wrangler に接続プロパティを追加してテストします。

    1. ウェブ インターフェースで Cloud Data Fusion インスタンスを開きます。
    2. [Wrangler] > [接続を追加] をクリックして、Redshift の新しい接続を作成します。
    3. すべての接続プロパティを入力します。
    4. [テスト接続] をクリックして、問題を解決します。

複数のスプリットを作成するには、境界クエリを使用します。

複数のスプリットの場合は、境界クエリを使用してマルチノード クラスタを管理します。Redshift からデータを抽出し、負荷を各ノードに均一に負荷を分散するシナリオでは、Redshift ソースコネクタのプロパティに境界クエリを構成します。

  1. [Studio] ページの Cloud Data Fusion パイプラインで、Redshift ノードに移動して [プロパティ] をクリックします。
  2. [詳細] プロパティで、次のことを指定します。

    1. 作成するスプリット数を入力します。
    2. 各スプリットのフェッチサイズを入力します。
    3. マルチノードの Redshift クラスタに適用する境界クエリを入力します。
    4. [分割列] フィールド名を入力します。

たとえば、次のようなユースケースがあるとします。

  • 1,000 万のレコードを含むテーブルがあります。
  • id という一意の ID 列があります。
  • Redshift クラスタには 4 つのノードがあります。
  • 目的: クラスタの可能性を活用するために、複数のスプリットを生成します。これを実施するには、次のプロパティ構成を使用します。

    • [境界クエリ] フィールドに、次のクエリを入力します。

      SELECT MIN(id), MAX(id) FROM tableName
      

      このクエリで、id はスプリットが適用される列の名前です。

    • [分割列] フィールドに列名の id を入力します。

    • スプリット数とフェッチサイズを入力します。これらのプロパティは相互に関連しているため、フェッチサイズに基づいてスプリットを計算することも、その逆も可能です。この例では、次のものを入力します。

    • [スプリット数] フィールドに 40 と入力します。この例では、テーブルに 1,000 万のレコードがあり、40 のスプリットを作成すると、各スプリットには 25 万のレコードが含まれます。

    • [フェッチサイズ] フィールドに 250,000 と入力します。

次のステップ