Apache NiFi でCertinia のデータにバッチ操作を実行

Jerod Johnson
Jerod Johnson
Senior Technology Evangelist
CData JDBC Driver を使用して、Apache NiFi でCertinia のデータに接続してバッチ操作を実行。

Apache NiFi は、データルーティング、変換、およびシステム間連携ロジックを強力かつスケーラブルに構築できるプラットフォームです。CData JDBC Driver for Certinia と組み合わせることで、NiFi からリアルタイムCertinia のデータを操作できるようになります。この記事では、CSV ファイルからデータを読み取り、Apache NiFi(バージョン1.9.0 以降)でCData JDBC Driver forCertinia のデータを使用してバッチ操作(INSERT/UPDATE/DELETE)を実行する方法を説明します。

最適化されたデータ処理が組み込まれたCData JDBC Driver は、リアルタイムCertinia のデータを扱う上で比類のないパフォーマンスを提供します。Certinia に複雑なSQL クエリを発行すると、ドライバーはフィルタや集計などのサポートされているSQL 操作をCertinia に直接プッシュし、サポートされていない操作(主にSQL 関数やJOIN 操作)は組み込みSQL エンジンを利用してクライアント側で処理します。組み込みの動的メタデータクエリを使用すると、ネイティブデータ型を使ってCertinia のデータを操作・分析できます。

JDBC URL の生成

Apache NiFi からCertinia のデータに接続するには、JDBC URL が必要です。

組み込みの接続文字列デザイナー

JDBC URL の作成をサポートするために、Certinia JDBC Driver に組み込まれている接続文字列デザイナーが使用できます。JAR ファイルをダブルクリックするか、コマンドラインからJAR ファイルを実行します。

		java -jar cdata.jdbc.certinia.jar
	

接続プロパティを入力し、接続文字列をクリップボードにコピーします。

Certinia 接続プロパティの取得・設定方法

デフォルトでは、CData 製品は本番環境に接続します。サンドボックスアカウントを使用するには、UseSandboxtrue に設定します。User にサンドボックスのユーザー名を指定してください。

Certinia への認証

Certinia への接続に使用できる認証方法は以下のとおりです。

  • ログイン認証
  • SSO
  • OAuth

ログインおよびトークン

User およびPassword をログインクレデンシャルに設定します。さらにSecurityToken を設定します。SecurityToken については、信頼できるIP アドレスに利用中のIP を追加することで指定する必要がなくなります。

セキュリティトークンを無効にするには、以下の手順を実行してください。

  1. Certinia にログインして、「設定」セクションの「Quick Find」ボックスに「Network Access」と入力します。
  2. 使用しているIP アドレスを信頼できるIP アドレスのリストに追加します。

セキュリティトークンの取得には、以下を実行してください。

  1. Certinia の個人情報設定用ページを開きます。
  2. セキュリティトークンリセット用のリンクをクリックすると、トークンが指定したメールアドレスに送信されます。
  3. 取得したセキュリティトークンを、SecurityToken 接続プロパティに指定するか、Password に追加してください。

OAuth

すべてのOAuth フローで、AuthSchemeOAuth に設定する必要があります。詳しい設定方法については、ヘルプドキュメントの「OAuth」セクションを参照してください。

Apache NiFi でのバッチ操作(INSERT/UPDATE/DELETE)

以下のサンプルフローは、次のNiFi プロセッサに基づいています:

  • ListFile - ローカルファイルシステムからファイルリストを取得し、取得した各ファイルにFlowFile を作成します。
  • FetchFile - ListFile プロセッサから受け取ったFlowFile のコンテンツを読み取ります。
  • PutDatabaseRecord - 指定されたRecordReader を使用して、FetchFile プロセッサからのフローファイルからレコードを入力します。これらのレコードはSQL 文に変換され、単一のトランザクションとして実行されます。
  • LogAttribute - 指定されたログレベルでFlowFile の属性を出力します。

完成したフローは以下のようになります:

注意事項

1. CSV ファイルのカラム名は、挿入/更新/削除するデータソーステーブルのレコードのカラム名と一致する必要があります。

2. Apache NiFi バージョン1.9.0 より前のバージョンでは、PutDatabaseRecord プロセッサの Maximum Batch Size プロパティがサポートされていません。

設定

バッチINSERT、UPDATE、またはDELETE を実行するには、NiFi プロセッサを以下のように設定します:

  1. ListFile プロセッサの設定:Input Directory プロパティを、CSV ファイルを取得するローカルフォルダパスに設定します。 File Filter プロパティを、名前が式に一致するファイルのみを選択する正規表現に設定します。 例:CSV ファイルのフルパスがC:\Users\Public\Documents\InsertNiFi.csv の場合、プロパティは以下の画像のように設定します:
  2. FetchFile プロセッサの設定
  3. FetchFile プロセッサのプロパティ設定はデフォルト値のままにします:
  4. PutDatabaseRecord プロセッサの設定
    • INSERT 操作

      バッチINSERT 操作を実行するには、PutDatabaseRecord プロセッサを以下のように設定します:

      • Record Reader プロパティをCSV Reader Controller Service に設定します。CSV Reader Controller Service を、CSV ファイルの形式に合わせて設定します。
      • Statement Type プロパティをINSERT に設定します。
      • Database Connection Pooling Service を、ドライバー設定を保持するDBCPConnection Pool に設定します。ドライバーはBulk API を使用するように設定する必要があります。

        プロパティ
        Database Connection URL jdbc:certinia:User=myUser;Password=myPassword;Security Token=myToken;
        Database Driver Class Name cdata.jdbc.certinia.CertiniaDriver
      • Catalog Name プロパティを、テーブルが属するカタログの名前に設定します。
      • Schema Name プロパティを、テーブルが属するスキーマの名前に設定します。
      • Table Name プロパティを、INSERT 先のテーブル名に設定します。
      • Maximum Batch Size プロパティを、単一のバッチに含めるレコードの最大数に設定します。

      UPDATE 操作

      バッチUPDATE 操作を実行するには、PutDatabaseRecord プロセッサを以下のように設定します:

      • Record Reader プロパティをCSV Reader Controller Service に設定します。CSV Reader Controller Service を、CSV ファイルの形式に合わせて設定します。
      • Statement Type プロパティをUPDATE に設定します。
      • Database Connection Pooling Service を、ドライバー設定を保持するDBCPConnection Pool に設定します。ドライバーはBulk API を使用するように設定する必要があります。上記と同じDatabase Connection URL 形式を使用します。
      • Catalog Name プロパティを、テーブルが属するカタログの名前に設定します。
      • Schema Name プロパティを、テーブルが属するスキーマの名前に設定します。
      • Table Name プロパティを、UPDATE 対象のテーブル名に設定します。
      • Update Keys プロパティを、UPDATE に必要なカラム名に設定します。
      • Maximum Batch Size プロパティを、単一のバッチに含めるレコードの最大数に設定します。

      DELETE 操作

      バッチDELETE 操作を実行するには、PutDatabaseRecord プロセッサを以下のように設定します:

      • Record Reader プロパティをCSV Reader Controller Service に設定します。CSV Reader Controller Service を、CSV ファイルの形式に合わせて設定します。
      • Statement Type プロパティをDELETE に設定します。
      • Database Connection Pooling Service を、ドライバー設定を保持するDBCPConnection Pool に設定します。ドライバーはBulk API を使用するように設定する必要があります。上記と同じDatabase Connection URL 形式を使用します。
      • Catalog Name プロパティを、テーブルが属するカタログの名前に設定します。
      • Schema Name プロパティを、テーブルが属するスキーマの名前に設定します。
      • Table Name プロパティを、UPDATE 対象のテーブル名に設定します。
      • INSERT やUPDATE のStatement Type とは異なり、DELETE 操作ではMaximum Batch Size プロパティは表示されません。ただし、操作は引き続きバッチで処理されます。変更しない場合、バッチあたりの最大レコード数はデフォルト値の2000 です。DELETE 操作で使用するMaximum Batch Size の値を変更するには、Statement Type をINSERT またはUPDATE に変更し、Maximum Batch Size プロパティの値を変更して「Apply Changes」をクリックします。最後に、プロセッサの設定を再度開き、Statement Type をDELETE に戻して「Apply Changes」をクリックします。
  5. LogAttribute プロセッサの設定

    最後に、LogAttribute プロセッサを設定して、ユースケースに基づいてログに記録または無視する属性とログレベルを指定します。

無償トライアルと詳細情報

CData JDBC Driver for Certinia の30日間無償トライアルをダウンロードして、Apache NiFi でリアルタイムCertinia のデータの操作をはじめましょう。ご不明な点があれば、サポートチームにお問い合わせください。

はじめる準備はできましたか?

Certinia Driver の無料トライアルをダウンロードしてお試しください:

 ダウンロード

詳細:

Certinia Icon Certinia JDBC Driver お問い合わせ

Certinia データに連携するJava アプリケーションを素早く、簡単に開発できる便利なドライバー。