トラブルシューティング

このページでは、Cloud Data Fusion に関する問題を解決する方法について説明します。

パイプラインの停止

Cloud Data Fusion バージョン 6.2 以前では、パイプラインが Starting 状態または Running 状態で停止するという既知の問題があります。パイプラインを停止すると、Malformed reply from SOCKS server のエラーが発生します。このエラーは、Dataproc マスターノードに十分なメモリリソースがないことが原因です。

推奨事項

パイプラインが次回の実行時に停止しないようにするには、Dataproc クラスタを削除します。次に、Compute Engine プロファイルのマスターメモリを更新します。

  • 必須: Dataproc クラスタのサイズを 2 つ以上の CPU に、マスターノードを 8 GB 以上に増やします。
  • (省略可)Cloud Data Fusion 6.2 に移行します。バージョン 6.2 以降では、パイプラインの実行は Dataproc ジョブ API を介して送信され、マスターノードでのメモリ使用量が多いことはありません。ただし、本番環境のジョブには 2 つの CPU と 8 GB のマスターノードを使用することをおすすめします。

クラスタサイズの変更

REST API

クラスタサイズを変更するには、コンピューティング プロファイルをエクスポートし、REST API を使用してメモリ設定を更新します。

  1. Compute プロファイルをエクスポートします。ローカルで JSON ファイルに保存されます。
  2. JSON ファイルのメモリ設定を次のように編集します。masterCPUs2 以上に更新し、masterMemoryMB8192 MB(約 8 GB)以上にします。

    {
     "name": "masterCPUs",
     "value": "2",
     "isEditable": true
    },
    {
     "name": "masterMemoryMB",
     "value": "8192",
     "isEditable": true
    },
    
  3. REST API を使用して、コンピューティング プロファイルを更新します。cURL または UI で HTTP エグゼキュータを使用できます。

    cURL の場合は、次のコマンドを使用します。

    curl -H "Authorization: Bearer $(gcloud auth print-access-token)" https://<data-fusion-instance-url>/api/v3/profiles/<profile-name> -X PUT -d @<path-to-json-file>

パイプラインの復元

停止したパイプラインを復元するには、インスタンスを再起動します。インスタンスを再起動するには、REST API または gcloud コマンドライン ツールを使用します。

REST API

インスタンスを再起動するには、restart() メソッドを使用します。

gcloud

インスタンスを再起動するには、次のコマンドを実行します。

gcloud beta data-fusion instances restart

同時実行パイプラインが停止する

多くの同時実行パイプラインを実行すると、次の問題が発生することがあります。パイプライン ジョブは、StartingProvisioningRunning のいずれかの状態で停止します。Cloud Data Fusion UI が遅くなるか、応答しなくなります。この場合、UI または API 呼び出しでパイプラインを停止できないことがあります。

推奨

  1. インスタンスを再起動します。

    REST API

    インスタンスを再起動するには、restart() メソッドを使用します。

    gcloud

    インスタンスを再起動するには、次のコマンドを実行します。

    gcloud beta data-fusion instances restart

  2. パイプラインの実行をずらします。パイプラインをずらして実行することができない場合や、問題が解決しない場合は、サポートの利用をご覧ください。

接合子プラグインに結合条件が表示されない

基本的な結合条件と高度な結合条件を切り替えることができる接合子プラグインを使用すると、Cloud Data Fusion バージョン 6.4.0 では次の問題が発生します。以前のバージョンからパイプラインをアップグレードまたはインポートした後に接合子のプロパティ ページを表示すると、構成したパイプラインの基本的な結合条件が表示されない。この問題はパイプラインの実行には影響しませんが、条件は残ったままとなります。

推奨

この問題を解決するには:

  1. [システム管理者] > [設定] > [HTTP 呼び出しを行う] の順番にクリックします。
  2. HTTP 呼び出しのエグゼキュータのフィールドに、次のように入力します。

    PUT namespaces/system/artifacts/core-plugins/versions/CORE_PLUGIN_VERSION/properties/widgets.Joiner-batchjoiner?scope=SYSTEM

    CORE_PLUGIN_VERSION には、最新のコア プラグイン バージョンを使用します。

  3. 次の JSON コンテンツを [本文] フィールドに貼り付けます。

    0967c-fdb73
    2ee80-67055
    b41f9-1dcd9
    425a5-cf822
    7e1a0-485e6
    eda47-040ea
    27430-fabba
    803ec-2c6e7
    8f7e0-2738d
    e22b5-4c375
    b3abb-778e4
    2deda-2d6be
    47855-b451d
    3e356-1268e
    f0ff9-876b6
    623df-8703a
    

  4. [送信] をクリックします。

Pipeline のページが別のウィンドウで開いている場合は、ページを更新して結合条件を表示する必要があります。

SQL Server のレプリケーションに、変更されたテーブルのすべての列が複製されない

SQL Server のテーブルからデータを複製するレプリケーション ジョブでは、次の問題が発生します。レプリケーション ソースのテーブルに新しい列が追加された場合、その列が CDC テーブルに自動的に追加されない。基になる CDC テーブルに手動で列を追加する必要があります。

推奨

この問題を解決するには:

  1. CDC インスタンスを無効にします。

    EXEC sp_cdc_disable_table
    @source_schema = N'dbo',
    @source_name = N'myTable',
    @capture_instance = 'dbo_myTable'
    GO
    
  2. CDC インスタンスをもう一度有効にします。

    EXEC sp_cdc_enable_table
    @source_schema = N'dbo',
    @source_name = N'myTable',
    @role_name = NULL,
    @capture_instance = 'dbo_myTable'
    GO
    
  3. 新しいレプリケーション ジョブを作成します

詳細については、ソーステーブルへの変更の処理をご覧ください。

レプリケーションと SQL Server Always On データベース

Microsoft SQL Server ソースは、Always On 読み取り専用レプリカから変更をキャプチャできます。この設定では、ランタイム引数 source.connector.database.applicationIntent=ReadOnly をレプリケーション ジョブに渡す必要があります。このランタイム引数がないと、ジョブは次のエラーで失敗します。

Producer failure java.lang.RuntimeException: com.microsoft.sqlserver.jdbc.SQLServerException: Failed to update database "DATABASE_NAME" because the database is read-only.

推奨

このエラーを解決するには、ランタイム引数として source.connector.database.applicationIntent=ReadOnly を設定します。これにより、snapshot.isolation.mode が内部で snapshot に設定されます。

BigQuery シンクのバージョン 0.17.0 でパイプラインが失敗するか、誤った結果を出力する

BigQuery シンク プラグインのバージョン 0.17.0 を含むデータ パイプラインが失敗する、または誤った結果をもたらす既知の問題があります。この問題は、バージョン 0.17.1 で解決されています。

推奨

この問題を解決するには、Google Cloud プラグインのバージョンを更新します。

  1. Google Cloud バージョン 0.17.1 以降を入手します。
    1. Cloud Data Fusion ウェブ UI で [HUB] をクリックします。
    2. Google Cloud バージョン 0.17.1 以降を選択して [デプロイ] をクリックします。
  2. パイプラインで使用しているすべての Google Cloud プラグインを、次のいずれかのオプションにあるバージョンにそろえます。
    • すべてのプラグイン バージョンを一度に更新するには、既存のパイプラインをエクスポートして、再度インポートします。インポートする際に、すべてのプラグインを最新バージョンに置き換えるオプションを選択します。
    • プラグインを手動で更新するには:
      1. Pipeline Studio ページを開きます。
      2. [シンク] メニューで、ポインタを BigQuery の上に置き、[変更] をクリックします。
      3. バージョン 0.17.1 以降を選択します。
      4. 使用中の他の Google Cloud プラグイン(BigQuery ソース プラグインなど)についても、この手順を繰り返します。

SQL Server ソース プラグインは、日時データ型をサポートしています

以前のバージョンの SQL Server ソース(バージョン 1.5.3 以前):

  • SQL Server の datetime および datetime2 データ型は、CDAP timestamp データ型にマッピングされます。
  • datetimeoffset データ型は CDAP string データ型にマッピングされます。

プラグイン バージョン 1.5.4 には下位互換性がありませんが、1.5.3 で動作していたパイプラインが、バージョン 1.5.4 にアップグレードすると、下流のステージがソースの出力スキーマに依存している場合に動作しなくなることがあります(出力スキーマが変更されるため)。バージョン 1.5.4 では、datetimedatetime2datetimeoffset に null 値がある場合、NullPointerException をスローします。

バージョン 1.5.5 以降は datetime と互換性があります。ほとんどの場合、1.5.3 で機能するパイプラインは 1.5.5 へのアップグレード後も機能します。ソース プラグインの既存の出力スキーマ設定が使用されます。たとえば、datetimedatetime2 のデータ型を timestamp のデータ型に、datetimeoffset のデータ型を string のデータ型にマッピングするように出力スキーマが設定されていても、それらは引き続き使用できます。

特別なケースとして、データベース名、スキーマ名、テーブル名にマクロを使用する場合や、出力スキーマを手動で指定していない場合があります。したがって、スキーマは実行時に検出され、マッピングされます。古いバージョン(1.5.3)では、実行時に datetimedatetime2timestamp データ型に、datetimeoffset データ型が string データ型にマッピングされます。1.5.5 以降では、実行時に datetime にマッピングされます。

推奨事項

この問題を解決するには、パイプラインをアップグレードしてプラグイン バージョン 1.5.5 以降を使用します。

アップグレード後、SQL Server datetimedatetime2datetimeoffset データ型が実行時に CDAP 日時データ型にマッピングされます。元のタイムスタンプ(datetimedatetime2 がマッピングされているもの)または文字列(datetimeoffset がマッピングされているもの)を使用するダウンストリーム ステージまたはシンクがある場合、更新するか、datetime データを消費することを確認します。詳細については、CDAP SQL Server バッチソースをご覧ください。