Impala¶
Impala にデータを読み込むには、挿入するデータをアップロードするオブジェクトストレージを構成する必要があります。Impala へのデータ一括読み込みを構成するには、「 HDFS、S3、または ADLS などの分散オブジェクトストレージへのデータ一括読み込み 」のセクションを参照してください。Virtual DataPort には、Impala へのデータ一括読み込みを実行するために、以下の 2 つのメカニズムが実装されています。
組み込みライブラリ (推奨):
外部 Hadoop インストール環境: Denodo 7.0 以前のバージョンで使用されていたメカニズムです。Hadoop をダウンロードして構成する必要があります。
以下のサブセクションでは、各シナリオでの Denodo のプロセスについて説明しています。
組み込み実装を使用した Impala へのデータ読み込み¶
実行時に、クエリに Impala への一括読み込みが含まれる場合、Virtual DataPort は、すべてのデータを 1 つのファイルに保存してディスクに完全に書き込んでから Impala に転送するのではなく、データを複数のチャンクで並列してアップロードします。
ビューのキャッシュをロードするクエリを実行するにあたって、キャッシュデータベースが Impala であるとします。キャッシュロードプロセスは以下のように実行されます。
VDP サーバーは、JDBC データソースの資格情報を使用して Impala に接続し、CREATE TABLE ステートメントを実行します。このステートメントで、データの場所として [Read & Write] で構成されている URI を指定します。データソースのユーザーアカウントは、この場所に対するアクセス権限を持っている必要があることに注意してください。
VDP サーバーは、結果の最初の数行を取得するとすぐに、それらをデータファイルに書き込み始めます。このファイルは、Parquet 形式でディスクに書き込まれます。
サーバーは、ファイルに 5,000,000 行を書き込むと、ファイルを閉じて、Impala データソースで定義されている場所に送信し始めます。同時に、後続の行を別のファイルに書き込みます。
5,000,000 は、データソースの [Read & Write] タブの [Batch insert size (rows)] フィールドのデフォルト値であり、変更可能です。この値を増やすと、アップロードプロセスの並列性が低下することに注意してください。
サーバーは、別のデータファイルへの書き込みを終了すると (つまり、ファイルがバッチ挿入サイズに到達すると)、先に生成されていたファイルの転送が完了していなくても、Impala にファイルを転送し始めます。デフォルトでは、クエリあたり最大 10 ファイルを同時に転送します。ファイルの数がこの制限に到達すると、サーバーはデータファイルに行を書き込み続けますが、それ以上ファイルを転送しません。
この制限は、VQL シェルで次のコマンドを実行することによって変更できます。
SET 'com.denodo.vdb.util.tablemanagement.sql.insertion.DFInsertWorker.hdfs.maxParallelUploads' = '<new limit per query>';
すべてのファイルがアップロードされると、キャッシュテーブルにキャッシュデータが格納された状態になります。なぜなら、テーブル作成文で指定した場所にアップロードデータファイルが存在するからです。
外部 Hadoop インストール環境を使用した Impala へのデータ読み込み¶
実行時に、クエリに Impala への一括読み込みが含まれる場合、Virtual DataPort は、すべてのデータを 1 つのファイルに保存してディスクに完全に書き込んでから Impala に転送するのではなく、データを複数のチャンクで並列してアップロードします。
ビューのキャッシュをロードするクエリを実行するにあたって、キャッシュデータベースが Impala であるとします。キャッシュロードプロセスは以下のように実行されます。
VDP サーバーは、JDBC データソースの資格情報を使用して Impala に接続し、CREATE TABLE ステートメントを実行します。このステートメントで、データの場所として [Read & Write] で構成されている URI を指定します。データソースのユーザーアカウントは、この場所に対するアクセス権限を持っている必要があることに注意してください。
VDP サーバーは、結果の最初の数行を取得するとすぐに、それらをデータファイルに書き込み始めます。このファイルは、Parquet 形式でディスクに書き込まれます。
サーバーは、ファイルに 5,000,000 行を書き込むと、ファイルを閉じて、Impala データソースで定義されている場所に送信し始めます。同時に、後続の行を別のファイルに書き込みます。
これを行うために、Virtual DataPort を実行しているホストで
hadoop.cmd fs put...
コマンドをローカルに実行します。Impala の構成によっては、このプロセスの次の手順を完了できるように、データソースのユーザー名を指定して
HADOOP_USER_NAME
環境変数をエクスポートする必要がある場合があります。このコマンドを実行する際、Virtual DataPort はデータソースの資格情報を使用 しません 。単にコマンドを実行するだけです。したがって、このホストからのコネクションを許可するように HDFS システムを構成する必要があります。たとえば、Virtual DataPort を実行しているホストでこのコネクションを許可する SSH キーをセットアップするか、または Kerberos 経由でのコネクションを許可します。
5,000,000 は、データソースの [Read & Write] タブの [Batch insert size (rows)] フィールドのデフォルト値であり、変更可能です。この値を増やすと、アップロードプロセスの並列性が低下することに注意してください。
サーバーは、別のデータファイルへの書き込みを終了すると (つまり、ファイルがバッチ挿入サイズに到達すると)、先に生成されていたファイルの転送が完了していなくても、Impala にファイルを転送し始めます。デフォルトでは、クエリあたり最大 10 ファイルを同時に転送します。ファイルの数がこの制限に到達すると、サーバーはデータファイルに行を書き込み続けますが、それ以上ファイルを転送しません。
この制限は、VQL シェルで次のコマンドを実行することによって変更できます。
SET 'com.denodo.vdb.util.tablemanagement.sql.insertion.DFInsertWorker.hdfs.maxParallelUploads' = '<new limit per query>';
すべてのファイルがアップロードされると、キャッシュテーブルにキャッシュデータが格納された状態になります。なぜなら、テーブル作成文で指定した場所にアップロードデータファイルが存在するからです。