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

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

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

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

JDBC URL の生成

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

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

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

		java -jar cdata.jdbc.garoon.jar
	

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

Garoon への認証は、パスワード認証、Basic 認証、クライアントSSL をサポートしています。

パスワード認証

Garoon への認証には、以下を設定する必要があります。

  • Url:アカウントのURL。
  • User:アカウントのユーザー名。
  • Password:アカウントのパスワード。

Basic 認証

Basic 認証セキュリティ機能がドメインに設定されている場合は、BasicAuthUser とBasicAuthPassword の追加ログイン資格情報を指定します。Basic 認証ではUser とPassword に加えて、これらのクレデンシャルが必要です。

クライアントSSL

Basic 認証の代わりに、クライアント証明書を指定してCData 製品を認証できます。 SSLClientCert、SSLClientCertType、 SSLClientCertSubject、 およびSSLClientCertPassword を設定します。 さらに、User とPassword をGaroon のログイン資格情報に設定します。

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:garoon:User=myuseraccount;Password=mypassword;Url=http://subdomain.domain.com;
        Database Driver Class Name cdata.jdbc.garoon.GaroonDriver
      • 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 Garoon の30日間無償トライアルをダウンロードして、Apache NiFi でリアルタイムGaroon のデータの操作をはじめましょう。ご不明な点があれば、サポートチームにお問い合わせください。

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

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

 ダウンロード

詳細:

Garoon Icon Garoon JDBC Driver お問い合わせ

商品、在庫、発送状況などのGaroon データを組み込んだ強力なJava アプリケーションを迅速に作成して配布できます。