一時ファイルの生成の設定¶
Virtual DataPort でデータベース独自のインターフェイスを使用してデータを一括で読み込むときは、まず区切り形式ファイルにデータが書き込まれ、そのデータがターゲットデータベースに転送されて、区切り形式ファイルは削除されます。
この区切り形式一時ファイルのさまざまな特性を以下の各プロパティで定義します。
意味 |
プロパティ名 |
---|---|
ファイルのエンコード。 デフォルトのエンコード: UTF-8 |
com.denodo.vdb.util.tablemanagement.sql.insertion.DFInsertWorker.encoding |
値の区切り文字。 デフォルト値: 0x1E (レコード分離文字 - U+001E) |
com.denodo.vdb.util.tablemanagement.sql.insertion.DFInsertWorker.fieldSeparator |
引用符文字 デフォルト値: 0x1F (ユニット分離文字 - U+001F) |
com.denodo.vdb.util.tablemanagement.sql.insertion.DFInsertWorker.quoteCharacter |
行区切り文字 デフォルト値: 0x1E の後に Virtual DataPort サーバーを実行しているプラットフォームの行末文字が続くバイト列。 |
com.denodo.vdb.util.tablemanagement.sql.insertion.DFInsertWorker.rowSeparator |
これらの値を変更するには、管理ツールに管理者アカウントでログインして、VQL シェルで以下のコマンドを実行します。
SET '<name of the property>' = '<new value>';
以下に例を示します。
SET 'com.denodo.vdb.util.tablemanagement.sql.insertion.DFInsertWorker.encoding'
= 'UTF-16';
さらに、すべてのデータベースアダプターではなく、特定のデータベースアダプターに対して上記の設定を変更することもできます。たとえば、Oracle で書き込むファイルのエンコードのみを変更して、それ以外のデータベースではデフォルトのエンコードをそのまま使用できます。
そのためには、 DFInsertWorker.
の後にピリオドに続いてアダプター名を挿入します。以下に例を示します。
SET 'com.denodo.vdb.util.tablemanagement.sql.insertion.DFInsertWorker.oracle.encoding'
= 'UTF-16';
このアダプター名は、データソースを作成した CREATE DATASOURCE JDBC
ステートメントのパラメータ DATABASENAME
の値です。データソースの [VQL] ダイアログで、この名前を確認できます。
Hadoop 互換の分散オブジェクトストレージの一時ファイルの生成¶
Hadoop 互換ストレージ (Hive、Impala、Presto、Spark、Databricks) を使用するデータベースでは、テーブルにデータを挿入する場合、オプション「 [Use bulk data load APIs]" 」を構成する必要があります。この場合、Denodo ではまず、挿入するデータを含む一時ファイルを Parquet 形式で生成します。次に、このセクションで構成した特定のパスに該当のファイルをアップロードします。最後に、指定したパスからデータベーステーブルがデータを取り込むために必要な操作を行います。
これらのデータのアップロードに対応しているオブジェクトストレージは S3 と HDFS です。S3 や Hadoop API (Azure ADLS など) と互換性のあるルートを構成することもできます。このトピックの詳細については、「 Hadoop 互換ストレージのサポート 」のセクションを参照してください。
この形式のオプションの中には、以下のオプションを使用して調整できるものがあります。
圧縮¶
一時ファイルは Snappy 圧縮アルゴリズムで生成されます。別のアルゴリズムを使用するか、圧縮を無効にするには、VQL シェルから以下のコマンドを実行します。
SET 'com.denodo.vdb.util.tablemanagement.sql.insertion.HdfsInsertWorker.parquet.compression'
= '<compression mechanism>';
<compression mechanism> に指定できる値は以下のとおりです。
off
(圧縮なし)snappy
(デフォルト値)gzip
lzo
このプロパティを変更した後で再起動は不要です。
選択した圧縮アルゴリズムが、目的のデータベースでサポートされている必要があります。
これらのファイルを圧縮して生成することにより、ビューのキャッシュにロードするプロセスやデータを移動するプロセスが高速になる可能性があります。ただし、Denodo サーバーと同じローカルエリアネットワークに目的のデータベースがある場合は、元々の転送速度が高速なので、高速化の効果が見られないこともあります。むしろ、処理時間が短くならないうえ、圧縮ファイルを生成するために CPU の使用率が増加することも考えられます。
小数の精度とスケール¶
Parquet ファイルでは、Decimal 型の値の精度とスケールを指定する必要があります。
これらの値を設定するために、Denodo サーバーでは、フィールドの「ソース型プロパティ」が存在すれば、それらの値が使用されます。ただし、ソース型プロパティが必ず存在するわけではありません (たとえば、JDBC 以外のデータソースから取得したフィールドには、基本ビューで手動によって設定されている場合を除いてソース型プロパティは存在せず、式の結果にはデフォルトではソース型プロパティが設定されません)。これらのプロパティが存在しない場合、精度は 38、スケールは 20 と仮定されます。これらの値を変更するには、VQL シェルから以下のコマンドを実行します (管理者のみが実行できます)。
SET 'com.denodo.vdb.util.tablemanagement.sql.insertion.HdfsInsertWorker.decimal.parquet.decimal.precision'
= '<precision>';
SET 'com.denodo.vdb.util.tablemanagement.sql.insertion.HdfsInsertWorker.decimal.parquet.decimal.scale'
= '<scale>';
現在の精度とスケールでは値を表現できない場合、「 Error processing value "xxx" as precision y and scale z
」のようなメッセージが表示されます。