BigQuery

Administration Tool で JDBC データソースを編集し、[Read & Write] タブをクリックして [Use bulk data load APIs] をチェックします。[File System] ドロップダウンでデータファイルのアップロードに使用するファイルシステムを選択します。この場合、選択できるオプションは、[HDFS] のみです。

[HDFS URI] テキストフィールドに Virtual DataPort がデータファイルをアップロードする URI を入力します。たとえば、「 gs://bucket-multiregion-us/user/admin/data/ 」と入力します。

[Hadoop properties] セクションでは、 core-site.xml のような Hadoop 構成ファイルで使用される Hadoop プロパティを設定できます。BigQuery データソースの場合、以下の Hadoop プロパティを確立する必要があります ([Read & Write] タブを使用します)。

  • google.cloud.auth.service.account.enable = true

  • google.cloud.auth.service.account.json.keyfile = <サービスアカウントキーが含まれる JSON ファイルのパス>

実行時に、クエリに BigQuery への一括読み込みが含まれる場合、Virtual DataPort では、すべてのデータを 1 つのファイルに保存してディスクに完全に書き込んでから BigQuery に転送するのではなく、データを複数のチャンクに分割して並列アップロードします。

ビューのキャッシュをロードするクエリを実行するにあたって、キャッシュデータベースが BigQuery であるとします。キャッシュロードプロセスは以下のように実行されます。

  1. VDP サーバーは、JDBC データソースの資格情報を使用して BigQuery に接続し、CREATE TABLE ステートメントを実行します。

  2. VDP サーバーは、結果の最初の数行を取得するとすぐに、結果をデータファイルに書き込み始めます。このファイルは Parquet 形式でディスクに書き込まれます。

  3. サーバーはファイルに 5,000,000 行を書き込むと、ファイルを閉じて BigQuery データソースで定義された場所にファイルを送信し始めます。同時に、後続の行を別のファイルに書き込みます。

    5,000,000 は、データソースの [Read & Write] タブの [Batch insert size (rows)] フィールドのデフォルト値であり、変更可能です。この値を増やすと、アップロードプロセスの並列性が低下することに注意してください。

  4. VDP サーバーは、Hadoop プロパティで指定された JSON ファイルから取得した資格情報を使用して、Google Cloud Storage に接続します。

  5. サーバーは、別のデータファイルへの書き込みを終了すると (つまり、ファイルがバッチ挿入サイズに到達すると)、先に生成されていたファイルの転送が完了していなくても、Google Cloud Storage (GCS) (つまり、[HDFS URI] フィールドで指定された場所) にファイルを転送し始めます。デフォルトでは、クエリあたり最大 10 ファイルを同時に転送します。ファイルの数がこの制限に到達すると、サーバーはデータファイルに行を書き込み続けますが、それ以上ファイルを転送しません。

    この制限は、VQL シェルで次のコマンドを実行することによって変更できます。

SET 'com.denodo.vdb.util.tablemanagement.sql.insertion.DFInsertWorker.hdfs.maxParallelUploads' = '<new limit per query>';
  1. 全ファイルのアップロードが完了すると、作成されたテーブルに BigQuery のデータが読み込まれます。その後、キャッシュテーブルにキャッシュデータが格納されます。

注釈

キャッシュプロセスまたはデータ移動プロセスに別のカタログ/スキーマを使用する必要が生じると、ドロップダウンリストに表示されるカタログが 1 つだけであることがわかります。これは、データソース作成時のコネクション URI にプロジェクト名 (プロジェクトは bigquery におけるカタログ) を含める必要があり、このプロジェクト名のみが [Read & Write] タブのドロップダウンリストに表示されるためです。