BigQuery¶
データ一括読み込みを実行するように BigQuery データソースを構成するには、以下の手順に従って実施してください。
Virtual DataPort が Windows で動作する場合、この機能には Microsoft Visual C++ 2013 再頒布可能パッケージ が必要です。インストール済みかどうか不明な場合、ダウンロードしてインストールします。このパッケージのインストーラーにより、すでにインストールされているかどうかが検出されます。
Virtual DataPort にログインして JDBC データソースを編集し、[Read & Write] タブをクリックします。[Use bulk data load APIs] をチェックして、以下の情報を指定します。
[Connection] タブの [Authentication] が [Service-based OAuth Authentication] になっている場合は、以下の手順を実行します。
[GS URI] テキストフィールドに、データソースがデータファイルをアップロードする URI を入力します。たとえば、「
gs://bucket-multiregion-us/user/admin/data/
」と入力します。[Private key] で、サービスアカウントキーが含まれる JSON ファイルを選択します。
他の認証方法の場合は、以下の手順を実行します。
[File System] ドロップダウンで、データファイルのアップロードに使用するファイルシステムを選択します。この場合、選択できるオプションは、[HDFS] のみです。
[HDFS URI] に、データソースがデータファイルをアップロードする URI を入力します。たとえば、「
gs://bucket-multiregion-us/user/admin/data/
」と入力します。[Hadoop properties] セクションでは、
core-site.xml
のような Hadoop 構成ファイルで使用される Hadoop プロパティを設定できます。BigQuery データソースの場合、以下の Hadoop プロパティを確立します ([Read & Write] タブを使用します)。
以下の Hadoop プロパティを設定します。
google.cloud.auth.service.account.enable = true
google.cloud.auth.service.account.json.keyfile = <サービスアカウントキーが含まれる JSON ファイルのパス>
実行時に、クエリに BigQuery への一括読み込みが含まれる場合、Virtual DataPort では、すべてのデータを 1 つのファイルに保存してディスクに完全に書き込んでから BigQuery に転送するのではなく、データを複数のチャンクに分割して並列アップロードします。
ビューのキャッシュをロードするクエリを実行するにあたって、キャッシュデータベースが BigQuery であるとします。キャッシュロードプロセスは以下のように実行されます。
VDP サーバーは、JDBC データソースの資格情報を使用して BigQuery に接続し、CREATE TABLE ステートメントを実行します。
VDP サーバーは、結果の最初の数行を取得するとすぐに、結果をデータファイルに書き込み始めます。このファイルは Parquet 形式でディスクに書き込まれます。
サーバーはファイルに 5,000,000 行を書き込むと、ファイルを閉じて BigQuery データソースで定義された場所にファイルを送信し始めます。同時に、後続の行を別のファイルに書き込みます。
5,000,000 は、データソースの [Read & Write] タブの [Batch insert size (rows)] フィールドのデフォルト値であり、変更可能です。この値を増やすと、アップロードプロセスの並列性が低下することに注意してください。
VDP サーバーは、Hadoop プロパティで指定された JSON ファイルから取得した資格情報を使用して、Google Cloud Storage に接続します。
サーバーは、別のデータファイルへの書き込みを終了すると (つまり、ファイルがバッチ挿入サイズに到達すると)、先に生成されていたファイルの転送が完了していなくても、Google Cloud Storage (GCS) (つまり、[GS URI] ([HDFS URI]) フィールドで指定された場所) にファイルを転送し始めます。デフォルトでは、クエリあたり最大 10 ファイルを同時に転送します。ファイルの数がこの制限に到達すると、サーバーはデータファイルに行を書き込み続けますが、それ以上ファイルを転送しません。
この制限は、VQL シェルで次のコマンドを実行することによって変更できます。
SET 'com.denodo.vdb.util.tablemanagement.sql.insertion.DFInsertWorker.hdfs.maxParallelUploads' = '<new limit per query>';
全ファイルのアップロードが完了すると、作成されたテーブルに BigQuery のデータが読み込まれます。その後、キャッシュテーブルにキャッシュデータが格納されます。
注釈
キャッシュプロセスまたはデータ移動プロセスに別のカタログ/スキーマを使用する必要が生じると、ドロップダウンリストに表示されるカタログが 1 つだけであることがわかります。これは、データソース作成時のコネクション URI にプロジェクト名 (プロジェクトは bigquery におけるカタログ) を含める必要があり、このプロジェクト名のみが [Read & Write] タブのドロップダウンリストに表示されるためです。