一時ファイルの生成の設定

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] ダイアログで、この名前を確認できます。

HDFS ストレージを使用するデータベース

HDFS ストレージを使用するデータベース (Hive、Impala、Presto、Spark、および Databricks) の場合、Parquet ファイル形式で一時ファイルが生成されます。

この形式のオプションの中には、以下のオプションを使用して調整できるものがあります。

圧縮

一時ファイルは Snappy 圧縮アルゴリズムで生成されます。別のアルゴリズムを使用するか、圧縮を無効にするには、VQL シェルから以下のコマンドを実行します。

SET 'com.denodo.vdb.util.tablemanagement.sql.insertion.HdfsInsertWorker.parquet.compression'
    = '<compression mechanism>';

<compression mechanism> に指定できる値は以下のとおりです。

  1. off (圧縮なし)

  2. snappy (デフォルト値)

  3. gzip

  4. 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 」のようなメッセージが表示されます。