8.2.17 フラット・ファイル

Oracle GoldenGate for Big Dataでは、ファイル・ライター・ハンドラを使用したローカル・ファイル・システムへのデータ・ファイルの書込みがサポートされています。

Oracle GoldenGate for Big Dataでは、ファイル・ライターによって作成されたデータ・ファイルのクラウド・ストレージ・サービスへのロードがサポートされています。このような場合、ファイル・ライター・ハンドラは、次のいずれかのクラウド・ストレージ構成で使用する必要があります:

8.2.17.1 ファイル・ライター・ハンドラ

ファイル・ライター・ハンドラとイベント・ハンドラを使用してデータを変換できます。

ファイル・ライター・ハンドラは、区切りテキスト、XML、JSON、AvroおよびAvroオブジェクト・コンテナ・ファイル形式でのデータ・ファイルの生成をサポートします。抽出、ロードおよび変換のユースケースに対応するためのものです。データ・ファイルは、ローカル・ファイル・システム上にステージングされます。その後、データ・ファイルへの書込みが完了すると、サード・パーティ・アプリケーションを使用して、追加処理を実行するファイルを読み取ることができます。

ファイル・ライター・ハンドラは、イベント・ハンドラ・フレームワークもサポートしています。イベント・ハンドラ・フレームワークを使用すると、ファイル・ライター・ハンドラで生成されたデータ・ファイルを、Optimized Row Columnar (ORC)やParquetなどの他の形式に変換できます。データ・ファイルは、HDFSやAmazon s3などのサード・パーティ・アプリケーションにロードできます。イベント・ハンドラ・フレームワークは、より多くのイベント・ハンドラが様々な変換を実行したり、開発される別のターゲットにロードできるように拡張できます。また、Oracle GoldenGate for Distributed Applications and Analytics (GG for DAA)環境用のカスタム・イベント・ハンドラを開発できます。

GG for DAAでは、HDFSに書き込むための2つのハンドラが用意されています。次の状況では、HDFSハンドラまたはファイル・ライター・ハンドラを使用することをお薦めします。

HDFSハンドラは、データをHDFSに直接ストリーミングするように設計されています。

HDFSで書込み後処理が発生していない場合に使用します。HDFSハンドラではファイルの内容を変更せず、単に、既存のファイルをHDFSにアップロードします。

分析ツールが、開いていてアクティブに書き込まれているファイル内のデータなど、HDFSに書き込まれるデータにリアルタイムにアクセスしている場合に使用します。

-ファイル・ライター・ハンドラが、ファイルの書込みが完了したときにローカル・ファイル・システムにデータをステージングし、完了したデータ・ファイルをHDFSにロードするように設計されています。

分析ツールが、HDFSに書き込まれるデータにリアルタイムでアクセスしません。

データを変換、リフォーマット、マージおよび最終的な場所に移動する書込み後処理がHDFSで発生します。

データ・ファイルがORCまたはParquet形式でHDFSに書き込まれます。

8.2.17.1.1 機能の詳細

8.2.17.1.1.1 ファイル・ロール・イベントの使用

ファイル・ロール・イベントは、特定のデータ・ファイルへの書込みが完了したときに発生します。その特定のデータ・ファイルには、これ以上データが書き込まれません。

ファイナライズ・アクション操作

次のオプションとともにfinalizeactionパラメータを使用してファイナライズ・アクション操作を構成し、ファイル・ロール・アクションが正常に実行された後に特定のデータ・ファイルがクリーン・アップされるようにできます。

none

データ・ファイルをそのままにします(アクティブな書込み接尾辞を削除します。「アクティブな書込み接尾辞について」を参照)。

delete

データ・ファイルを削除します(データ・ファイルが別の形式に変換されていたり、サード・パーティ・アプリケーションにロードされている場合)。

move

ファイル名を維持(アクティブな書込み接尾辞を削除)しますが、ファイルをmovePathMappingTemplateプロパティを使用して解決したディレクトリに移動します。

rename

現在のディレクトリを維持しますが、fileRenameMappingTemplateプロパティを使用して、データ・ファイルの名前を変更します。

move-rename

fileRenameMappingTemplateプロパティによって生成されたファイル名を使用してファイル名を変更し、movePathMappingTemplateプロパティを使用して解決したディレクトリにファイルを移動します。

通常、イベント・ハンドラは、これらの同じアクションのサブセットを提供します。

ファイナライズ・アクション操作のサンプル構成を次に示します。

gg.handlerlist=filewriter
#The File Writer Handler
gg.handler.filewriter.type=filewriter
gg.handler.filewriter.mode=op
gg.handler.filewriter.pathMappingTemplate=./dirout/evActParamS3R
gg.handler.filewriter.stateFileDirectory=./dirsta
gg.handler.filewriter.fileNameMappingTemplate=${fullyQualifiedTableName}_${currentTimestamp}.txt
gg.handler.filewriter.fileRollInterval=7m
gg.handler.filewriter.finalizeAction=delete
gg.handler.filewriter.inactivityRollInterval=7m

ファイル・ローリング・アクション

次のすべてのアクションによって、ファイル・ロール・イベントがトリガーされます。

  • メタデータ変更イベント。

  • 構成ファイルの最大サイズ超過

  • ファイル・ロールの間隔超過(現在時刻から最初のファイル書込み時刻を差し引いた時間が、ファイル・ロール間隔よりも大きい)。

  • 非アクティブ・ロールの間隔超過(現在時刻から最後のファイル書込み時刻を差し引いた時間が、ファイル・ロール間隔よりも大きい)。

  • ファイル・ライター・ハンドラはシャットダウン時にロールするよう構成されている場合のReplicatプロセスの停止。

操作シーケンス

ファイル・ロール・イベントによって、操作のシーケンスの発生がトリガーされます。個々のデータファイルがロールされたときに発生する操作の順序を理解することが重要です。

  1. アクティブなデータ・ファイルが非アクティブに切り替えられ、データ・ファイルがフラッシュされて、状態データ・ファイルがフラッシュされます。

  2. 構成されたイベント・ハンドラは、指定された順序で呼び出されます。

  3. ファイナライズ・アクションは、すべてのイベント・ハンドラで、構成した順序と逆の順序で実行されます。構成したすべてのファイナライズ・アクションが実行されます。

  4. ファイナライズ・アクションは、データ・ファイルおよび状態ファイルに対して実行されます。すべてのアクションが正常に完了すると、状態ファイルが削除されます。構成したすべてのファイナライズ・アクションが実行されます。

たとえば、Parquetイベント・ハンドラとS3イベント・ハンドラを使用してファイル・ライター・ハンドラを構成する場合、ロール・イベントの順序は次のようになります。

  1. アクティブなデータ・ファイルが非アクティブに切り替えられ、データ・ファイルがフラッシュされて、状態データ・ファイルがフラッシュされます。

  2. Parquetイベント・ハンドラが呼び出され、ソース・データ・ファイルからParquetファイルが生成されます。

  3. S3イベント・ハンドラが呼び出され、生成されたParquetファイルがS3にロードされます。

  4. ファイナライズ・アクションが、S3 Parquetイベント・ハンドラに対して実行されます。構成したすべてのファイナライズ・アクションが実行されます。

  5. ファイナライズ・アクションが、Parquetイベント・ハンドラに対して実行されます。構成したすべてのファイナライズ・アクションが実行されます。

  6. ファイナライズ・アクションが、ファイル・ライター・ハンドラのデータ・ファイルに対して実行されます

8.2.17.1.1.2 自動ディレクトリ作成
ハンドラを実行する前に書込みディレクトリを構成する必要はありません。ファイル・ライター・ハンドラは、ファイルを作成する前に指定された書込みディレクトリが存在するかどうかを確認し、必要に応じて再帰的にディレクトリを作成します。
8.2.17.1.1.3 アクティブな書込み接尾辞について

一般的なユースケースでは、サード・パーティ・アプリケーションを使用して、データ・ファイルを読み取る書込みディレクトリを監視します。サード・パーティ・アプリケーションは、ファイルへの書込みが完了した場合にのみデータ・ファイルを読み取ることができます。これらのアプリケーションでは、データ・ファイルへの書込みがアクティブであるか、または完了しているかを判別する方法が必要になります。ファイル・ライター・ハンドラを使用すると、次のプロパティを使用してアクティブな書込み接尾辞を構成できます。

gg.handler.name.fileWriteActiveSuffix=.tmp

このプロパティの値は、生成されたファイル名に付加されます。ファイルへの書込みが完了すると、データ・ファイルの名前が変更され、アクティブな書込み接尾辞がファイル名から削除されます。データ・ファイル名を監視し、アクティブな書込み接尾辞がいつ削除されたかを識別するように、サード・パーティ・アプリケーションを設定できます。

8.2.17.1.1.4 状態のメンテナンス

以前は、すべてのOracle GoldenGate for Distributed Applications and Analytics (GG for DAA)ハンドラがステートレスでした。これらのステートレス・ハンドラでは、実行していたReplicatプロセスのコンテキストでの状態のみを保持します。Replicatプロセスを停止して再起動した場合、すべての状態が失われていました。Replicatを再起動すると、ハンドラは、前回の実行時の状況の認識がない状態で書込みを開始しました。

ファイル・ライター・ハンドラは、Replicatプロセスの呼出し間で状態を維持するための機能を提供します。デフォルトでは、再起動に伴って次のことが実行されます。

  • 状態保存ファイルが読み取られます。

  • 状態がリストアされます。

  • 前回の実行が停止した位置からアクティブ・データ・ファイルの追加が続行されます。

次のプロパティを設定することで、このデフォルトのアクションから、シャットダウン時にすべてのファイルのロールが必要になるように変更できます。

gg.handler.name.rollOnShutdown=true

8.2.17.1.2 ファイル・ライター・ハンドラの構成

ファイル・ライター・ハンドラの構成可能な値を示しています。これらのプロパティは、Javaアダプタ・プロパティ・ファイルにあります(Replicatプロパティ・ファイルにはありません)

ファイル・ライター・ハンドラの選択を有効にするには、まずgg.handler.name.type=filewriterおよびその他のファイル・ライター・プロパティを次のように指定してハンドラ・タイプを構成する必要があります。

表8-19 ファイル・ライター・ハンドラの構成プロパティ

プロパティ 必須/オプション 有効な値 デフォルト 説明

gg.handler.name.type

必須

filewriter

なし

使用するファイル・ライター・ハンドラを選択します。

gg.handler.name.maxFileSize

オプション

デフォルトの測定単位はバイトです。kmまたはgがそれぞれキロバイト、メガバイト、ギガバイトを表すように指定できます。有効な値は、1000010k100m1.1gなどです。

1g

ファイル・ライター・ハンドラによって生成されるファイルの最大ファイル・サイズを設定します。ファイル・サイズが超過すると、ロール・イベントがトリガーされます。

gg.handler.name.fileRollInterval

オプション

デフォルトの測定単位はミリ秒です。mssmhがそれぞれ、ミリ秒、秒、分、時間を表すように指定できます。有効な値は、1000010000ms10s10m1.5hなどです。0以下の値を指定すると、ファイルのローリング・オン時間がオフになります。

ファイルのローリング・オン時間がオフ。

タイマーは、ファイルが作成されるときにスタートします。間隔が経過したときにまだファイルが開いている場合、ファイル・ロール・イベントがトリガーされます。

gg.handler.name.inactivityRollInterval

オプション

デフォルトの測定単位はミリ秒です。mssmhがそれぞれ、ミリ秒、秒、分、時間を表すように指定できます。有効な値は、1000010000ms10s10m1.5hなどです。0以下の値を指定すると、ファイルのローリング・オン時間がオフになります。

ファイルの非アクティブ・ローリングがオフ。

タイマーは、生成されたファイルへの前回の書込みからスタートします。生成されたファイルへの新しい書込みでカウンタが再開されます。タイマーが経過したときにまだファイルが開いている場合、ロール・イベントがトリガーされます。

gg.handler.name.fileNameMappingTemplate

必須

実行時にファイル・ライター・ハンドラのデータ・ファイル名を動的に生成するために使用される、解決可能なキーワードと定数を含む文字列。

なし

定数とともにインタレースされるキーワードを使用して、一意のファイル名を実行時に動的に生成します。通常、ファイル名は、 /some/path/${tableName}_${groupName}_${currentTimestamp}.txtの形式に従います。テンプレート・キーワードを参照してください。

gg.handler.name.pathMappingTemplate

必須

ファイルが書き込まれるディレクトリを動的に生成するために使用される、解決可能なキーワードと定数を含む文字列。

なし

定数とインタレースされたキーワードを使用して、一意のパス名を実行時に動的に生成します。通常、パス名は/some/path/${tableName}の形式に従います。テンプレート・キーワードを参照してください。

gg.handler.name.fileWriteActiveSuffix

オプション

文字列。

なし

ファイルへの書込みがアクティブであることを示すために、ファイル・ライター・ハンドラによって生成されたファイルに付加されるオプションの接尾辞。ファイナライズ・アクションで、接尾辞が削除されます。

gg.handler.name.stateFileDirectory

必須

ファイル・ライター・ハンドラの状態ファイルを格納するローカル・マシン上のディレクトリ。

なし

ファイル・ライター・ハンドラの状態ファイルを格納するローカル・マシン上のディレクトリを設定します。調整された適用環境での操作時に機能するように、グループ名がディレクトリに追加されます。

gg.handler.name.rollOnShutdown

オプション

true | false

false

trueに設定すると、Replicatプロセスの正常なシャットダウン時に開いているすべてのファイルが閉じて、ファイル・ロール・イベントがトリガーされます。成功した場合、ファイル・ライター・ハンドラからファイル・ライター・ハンドラの再起動には状態を引き継ぎません。

gg.handler.name.finalizeAction

オプション

none | delete | move | rename | move-rename

none

ファイナライズ・アクションでのファイル・ライター・ハンドラの動作を示します。

none

データ・ファイルをそのままにします(アクティブな書込み接尾辞を削除します。「アクティブな書込み接尾辞について」を参照)。

delete

データ・ファイルを削除します(データ・ファイルが別の形式に変換されていたり、サード・パーティ・アプリケーションにロードされている場合)。

move

ファイル名を維持(アクティブな書込み接尾辞を削除)しますが、ファイルをmovePathMappingTemplateプロパティを使用して解決したディレクトリに移動します。

rename

現在のディレクトリを維持しますが、fileRenameMappingTemplateプロパティを使用して、データ・ファイルの名前を変更します。

move-rename

fileRenameMappingTemplateプロパティによって生成されたファイル名を使用してファイル名を変更し、movePathMappingTemplateプロパティを使用して解決したディレクトリにファイルを移動します。

gg.handler.name.partitionByTable

オプション

true | false

true

trueに設定すると、別のソース表からのデータが個別のファイルにパーティション化されます。falseに設定すると、すべてのソース表からの操作データが単一の出力ファイルにインタレースされます。ファイル形式がAvro OCF (オブジェクト・コンテナ・ファイル)形式である場合は、falseに設定できません。

gg.handler.name.eventHandler

オプション

HDFS | ORC | PARQUET | S3

イベント・ハンドラは構成されない。

イベント・ハンドラを相互参照する一意の文字列識別子。イベント・ハンドラは、ファイル・ロール・イベントで呼び出されます。イベント・ハンドラは、S3へのファイルのロード、ParquetまたはORC形式への変換、HDFSへのファイルのロードなどのファイル・ロール・イベントのアクションを実行できます。

gg.handler.name.fileRenameMappingTemplate

gg.handler.name.finalizeActionrenameまたはmove-renameに設定されている場合に必要です。

ファイナライズ・アクションにおけるファイルの名前変更用にファイル・ライター・ハンドラのデータ・ファイル名を動的に生成するために使用される、解決可能なキーワードと定数を含む文字列。

なし。

定数とともにインタレースされるキーワードを使用して、一意のファイル名を実行時に動的に生成します。ファイル名は、通常、${fullyQualifiedTableName}_${groupName}_${currentTimestamp}.txtの形式に従います。テンプレート・キーワードを参照してください。

gg.handler.name.movePathMappingTemplate

gg.handler.name.finalizeActionrenameまたはmove-renameに設定されている場合に必要です。

ファイルが書き込まれるディレクトリを動的に生成するために使用される、解決可能なキーワードと定数を含む文字列。

なし

定数とともにインタレースされるキーワードを使用して、一意のパス名を実行時に動的に生成します。パス名は、通常、/ogg/data/${groupName}/${fullyQualifiedTableName}の形式に従います。テンプレート・キーワードを参照してください。

gg.handler.name.format

必須

delimitedtext | json | json_row | xml | avro_row | avro_op | avro_row_ocf | avro_op_ocf

delimitedtext

出力データのフォーマット方法について、HDFSハンドラのフォーマッタを選択します

delimitedtext

区切りテキスト。

json

JSON

json_row

JSON出力モデリング行データ

xml

XML

avro_row

行コンパクト形式のAvro。

avro_op

操作詳細形式のAvro。

avro_row_ocf

Avroオブジェクト・コンテナ・ファイル(OCF)形式でHDFSに書き込まれる行コンパクト形式のAvro。

avro_op_ocf

Avro OCF形式でHDFSに書き込まれる詳細形式のAvro。

ParquetまたはORCイベント・ハンドラを使用する場合、選択した形式がavro_row_ocfまたはavro_op_ocfである必要があります。

gg.handler.name.bom

オプション

16進文字の偶数。

なし

各2文字がバイト・オーダー・マーク(BOM)で1バイトに対応している16進文字の偶数を入力します。たとえば、文字列efbbbfは、UTF-8の3バイトのBOMを表します。

gg.handler.name.createControlFile

オプション

true | false

false

制御ファイルを作成するには、trueに設定します。制御ファイルには、区切り文字で区切られたパスを含む完全なファイル名がすべて含まれています。制御ファイルの名前は、{groupName}.controlです。たとえば、Replicatプロセス名がfwの場合、制御ファイル名はFW.controlです。

gg.handler.name.controlFileDelimiter

オプション

任意の文字列

改行(\n)

制御ファイルで区切り文字で区切られたファイル名を制御できます。このプロパティではCDATA[]ラッピングを使用できます。

gg.handler.name.controlFileDirectory

オプション

制御ファイルを格納するディレクトリのパス。

ピリオド(.)またはOracle GoldenGateインストール・ディレクトリ。

制御ファイルを作成する場所を指定するように設定されます。

gg.handler.name.createOwnerFile

オプション

true | false

false

所有者ファイルを作成するには、trueに設定します。所有者ファイルは、Replicatプロセスが開始され、正常に終了して削除されたときに作成されます。所有者ファイルを使用すると、他のアプリケーションで、プロセスが実行されているかどうかを判別できます。所有者ファイルは、Replicatプロセスが異常終了した場合はそのまま保持されます。所有者ファイルの名前は、{groupName}.ownerです。たとえば、Replicatプロセス名がfwの場合、所有者ファイル名はFW.ownerです。このファイルは、.ディレクトリまたはOracle GoldenGateインストール・ディレクトリに作成されます。

gg.handler.name.atTime

オプション

開いているすべてのファイルのロール・アクションをトリガーするために1回以上。

なし

次の形式で1つ以上のトリガー時刻を構成します。

HH:MM,HH:MM,HH:MM

エントリは24時間制に基づきます。たとえば、1日のうち3回個別の時刻にロールされるアクションを構成するエントリは次のとおりです。

gg.handler.fw.atTime=03:30,21:00,23:51

gg.handler.name.avroCodec

オプション

null

圧縮なし。

null | bzip2 | deflate | snappy | xz

生成されたAvro OCFファイルに対応する圧縮アルゴリズムを有効にします。圧縮を有効にしたら、対応する圧縮ライブラリをgg.classpathに追加する必要があります。

gg.handler.name.bufferSize

オプション

1024

正の整数 >= 512

アクティブな書込みストリームごとにBufferedOutputStreamのサイズを設定します。アクティブな書込みストリームが少ない場合は特に、より大きな値を設定するとパフォーマンスが向上しますが、それらのストリームには多数の操作が書き込まれます。アクティブな書込みストリームが多数存在する場合、このプロパティの値を増やすのは望ましくありません。Javaヒープの消費によってメモリー不足例外が発生することがあります。

gg.handler.name.rollOnTruncate オプション true | false false 切り捨て操作が発生したときに、ハンドラによってデータファイルのロールオーバーを発生させるかどうかを指定します。デフォルトはfalseです。これは、切捨て操作が提示されたときに、対応するデータ・ファイルがロールされないことを意味します。trueに設定すると、切り捨て操作時にデータ・ファイルがロールされます。切捨て操作を伝播するには、ReplicatプロパティGETTRUNCATESを設定します。
gg.handler.name.logEventHandlerStatus オプション true | false false trueに設定すると、完了したイベント・ハンドラのステータスが情報ロギング・レベルで記録されます。イベント・ハンドラのデバッグおよびトラブルシューティングに使用できます。
gg.handler.name.eventHandlerTimeoutMinutes オプション 長整数 120 イベント・ハンドラ・スレッドのタイムアウト(分)。ファイル・ライター・ハンドラによって生成されたイベント・ハンドラ・スレッドには、作業を完了するための最大実行時間が提供されます。タイムアウト値を超えると、Replicatはイベント・ハンドラ・スレッドがハングしていると想定し、異常終了します。ステージングおよびマージのユースケースでは、イベント・ハンドラ・スレッドが作業を完了するのに時間がかかる場合があります。デフォルト値は120 (2時間)に設定されます。
gg.handler.name.processBacklogOnShutdown オプション true | false false trueに設定すると、Replicatで、イベント・ハンドラ・フレームワークを介して未処理のステージング済ファイルがすべて処理されるようになります。データ・ウェアハウス・ターゲットへの初期ロード・レプリケーションの場合は、trueに設定することをお薦めします。単純なデータ形式変換やクラウド・ストレージへのロードのシナリオの場合は、trueに設定することをお薦めします。マージには長時間かかる可能性があるため、データ・ウェアハウス・ターゲットへのCDCレプリケーションの場合はfalseに設定することをお薦めします。

8.2.17.1.3 ファイル・ライター・ハンドラの停止

ファイル・ライター・ハンドラを実行しているReplicatプロセスは、正常に停止する必要があります。
  • 強制停止はReplicatプロセスでは実行しないでください。
  • Unixのkillコマンドを使用してReplicatプロセスを終了しないでください。
ファイル・ライターは、データ・ファイルを記述し、状態ファイルを使用して進行状況と状態を追跡しています。ファイルの書込みはトランザクションではありません。Replicatプロセスの異常終了は、ファイル・ライター・ハンドラが一貫性のないの状態になる可能性があることを意味します。ベスト・プラクティスは、Replicatプロセスを正常に停止することです。

一貫性のない状態は、Replicatプロセスが起動時に異常終了し、状態ファイルの手動削除が必要になることを意味する場合があります。

一貫性のない状態を示す一般的なエラーメッセージを次に示します。
ERROR 2022-07-11 19:05:23.000367  [main]- Failed to 
restore state for UUID  [d35f117f-ffab-4e60-aa93-f7ef860bf280] 
table name [QASOURCE.TCUSTORD]  
data file name [QASOURCE.TCUSTORD_2022-07-11_19-04-27.900.txt]
このエラーは、データ・ファイルがファイル・システムから削除されているが、対応する.stateファイルがまだ削除されていないことを意味します。通常、次の3つのシナリオでこの問題が発生する可能性があります。
  • データ・ファイルが削除されてから関連する.stateファイルが削除されるまでの処理期間中に、Replicatプロセスが強制的に停止されたか、killコマンドを使用して強制終了されたか、クラッシュしました。
  • ユーザーはデータ・ファイルまたはファイルを手動で削除しましたが、関連する.stateファイルをそのまま残しました。
  • 同じReplicatプロセスの2つのインスタンスが実行されています。これを防ぐためにロック・ファイルが作成されますが、Replicat起動時にReplicatプロセスの複数のインスタンスを起動できるウィンドウがあります。

この問題が発生した場合は、.stateファイルに関連付けられているデータ・ファイルが正常に処理されたかどうかを手動で判断する必要があります。データが正常に処理された場合は、.stateファイルを手動で削除し、Replicatプロセスを再起動できます。

問題のある.stateファイルに関連付けられているデータ・ファイルが処理されていないと判断された場合、次を実行します。

  1. すべての.stateファイルを削除します。
  2. Replicatプロセスのseqnoおよびrbaを変更し、処理が正常に行われたことがわかっている期間までバックアップします。
  3. Replicatプロセスを再起動して、データを再処理します。

8.2.17.1.4 サンプル構成の確認

このファイル・ライター・ハンドラの構成例では、Parquetイベント・ハンドラを使用して、データ・ファイルをParquetに変換し、その後、S3イベント・ハンドラ用にParquetファイルをS3にロードしています。

gg.handlerlist=filewriter 

#The handler properties 
gg.handler.name.type=filewriter 
gg.handler.name.mode=op 
gg.handler.name.pathMappingTemplate=./dirout 
gg.handler.name.stateFileDirectory=./dirsta 
gg.handler.name.fileNameMappingTemplate=${fullyQualifiedTableName}_${currentTimestamp}.txt 
gg.handler.name.fileRollInterval=7m 
gg.handler.name.finalizeAction=delete 
gg.handler.name.inactivityRollInterval=7m 
gg.handler.name.format=avro_row_ocf 
gg.includeggtokens=true 
gg.handler.name.partitionByTable=true 
gg.handler.name.eventHandler=parquet 
gg.handler.name.rollOnShutdown=true 

gg.eventhandler.parquet.type=parquet 
gg.eventhandler.parquet.pathMappingTemplate=./dirparquet 
gg.eventhandler.parquet.writeToHDFS=false 
gg.eventhandler.parquet.finalizeAction=delete 
gg.eventhandler.parquet.eventHandler=s3 
gg.eventhandler.parquet.fileNameMappingTemplate=${tableName}_${currentTimestamp}.parquet 

gg.handler.filewriter.eventHandler=s3 
gg.eventhandler.s3.type=s3
gg.eventhandler.s3.region=us-west-2 
gg.eventhandler.s3.proxyServer=www-proxy.us.oracle.com 
gg.eventhandler.s3.proxyPort=80 
gg.eventhandler.s3.bucketMappingTemplate=tomsfunbucket 
gg.eventhandler.s3.pathMappingTemplate=thepath 
gg.eventhandler.s3.finalizeAction=none

8.2.17.1.5 ファイル・ライター・ハンドラのパーティション化

パーティション化機能が、Oracle GoldenGate for Distributed Applications and Analytics (GG for DAA) 21.1でのファイル・ライター・ハンドラに追加されました。パーティション化機能ではテンプレート・マッパー機能を使用してパーティション化文字列を解決します。その結果、ソース証跡データのパーティション化方法を制御できるようになります。

テンプレートでサポートされているキーワードはすべて、ファイル・ライター・ハンドラのパーティション化でサポートされるようになりました。

8.2.17.1.5.1 ファイル・ライター・ハンドラのパーティション化の前提条件

パーティション化機能を使用するには、データが表ごとにパーティション化されている必要があります。次の構成は設定できません: gg.handler.filewriter.partitionByTable=false

8.2.17.1.5.2 パス構成

パス・マッピング・テンプレートの構成がgg.handler.filewriter.pathMappingTemplate=/ogg/${fullyQualifiedTableName}であると想定します。ソース表DBO.ORDERSの場合、パスは実行時に次のように解決されます: /ogg/DBO.ORDERS

8.2.17.1.5.3 パーティション化構成

テンプレートで有効なキーワードはすべてパーティション化でも有効です: gg.handler.filewriter.partitioner.fully qualified table name=templating keywords and/or constants

テンプレート・キーワードを参照してください。
例1

DBO.ORDERS表のパーティション化が次のように設定されています。

gg.handler.filewriter.partitioner.DBO.ORDERS=par_sales_region=${columnValue[SALES_REGION]} 

この例では、ファイル・システム上で次のようなファイル分割が発生します。

/ogg/DBO.ORDERS/par_sales_region=west/data files 
/ogg/DBO.ORDERS/par_sales_region=east/data files 
/ogg/DBO.ORDERS/par_sales_region=north/data files 
/ogg/DBO.ORDERS/par_sales_region=south/data file
例2

DBO.ORDERS表のパーティション化が次のように設定されています。

gg.handler.filewriter.partitioner.DBO.ORDERS=par_sales_region=${columnValue[SALES_REGION]}/par_state=${columnValue[STATE]}
この例では、ファイル・システム上で次のようなファイル分割が発生します。
/ogg/DBO.ORDERS/par_sales_region=west/par_state=CA/data files
/ogg/DBO.ORDERS/par_sales_region=east/par_state=FL/data files
/ogg/DBO.ORDERS/par_sales_region=north/par_state=MN/data files
/ogg/DBO.ORDERS/par_sales_region=south/par_state=TX/data files 

注意:

パーティション化の構成は慎重に行ってください。データ値の幅が大きいパーティション化列値を選択すると、比例した数の出力データ・ファイルにパーティション化されます。
8.2.17.1.5.4 イベント・ハンドラへのパーティション化の影響

解決されたパーティション化パスは、対応するイベント・ハンドラにも転送されます。

例1

パーティション化が gg.handler.filewriter.partitioner.DBO.ORDERS=par_sales_region=${columnValue[SALES_REGION]}のように構成されている場合、パーティション文字列は次のように解決されます。

par_sales_region=west
par_sales_region=east
par_sales_region=north
par_sales_region=south
例2

S3イベント・ハンドラを使用する場合、S3イベント・ハンドラのパス・マッピング・テンプレートは次のように構成されます: gg.eventhandler.s3.pathMappingTemplate=output/dir。S3のターゲット・ディレクトリは次のようになります。

output/dir/par_sales_region=west/data files
output/dir/par_sales_region=east/data files
output/dir/par_sales_region=north/data files
output/dir/par_sales_region=south/data files

8.2.17.2 Optimized Row Columnar (ORC)

データ・ファイルを生成するOptimized Row Columnar (ORC)イベント・ハンドラはORC形式です。

このトピックでは、ORCイベント・ハンドラの使用方法について説明します。

8.2.17.2.1 概要

ORCは、データ取得時間、およびOracle GoldenGate for Distributed Applications and Analytics (GG for DAA)の分析のパフォーマンスが大幅に向上する行列形式です。ORCイベント・ハンドラを使用して、ローカル・ファイル・システムまたはHDFSに直接ORCファイルを書き込むことができます。詳細は、https://orc.apache.org/を参照してください。

8.2.17.2.2 機能の詳細

8.2.17.2.2.1 アップストリーム・データ形式について

ORCイベント・ハンドラは、ファイル・ライター・ハンドラによって生成されたAvroオブジェクト・コンテナ・ファイル(OCF)のみを変換できます。ORCイベント・ハンドラは他の形式をORCデータ・ファイルに変換できません。ファイル・ライター・ハンドラの形式は、avro_row_ocfまたはavro_op_ocfである必要があります。「フラット・ファイル」を参照してください。

8.2.17.2.2.2 ライブラリの依存性について

ORCファイルを生成するには、Apache ORCライブラリおよびHDFSクライアント・ライブラリの両方が必要です。「Optimized Row Columnarイベント・ハンドラ・クライアント依存性」および「HDFSハンドラ・クライアント依存性」を参照してください。

Oracle GoldenGate for Distributed Applications and Analytics (GG for DAA)には、Apache ORCライブラリもHDFSクライアント・ライブラリも含まれていません。依存性ライブラリを含めるには、gg.classpath変数を構成する必要があります。

8.2.17.2.2.3 要件

ORCイベント・ハンドラはORCファイルを直接HDFSに書き込むことができます。writeToHDFSプロパティをtrueに設定する必要があります。

gg.eventhandler.orc.writeToHDFS=true

HDFS core-site.xmlファイルを含むディレクトリがgg.classpathにあることを確認します。これは、core-site.xmlファイルを実行時に読み取ることができ、HDFSへの接続情報を解決できるようにしています。たとえば:

gg.classpath=/{HDFS_install_directory}/etc/hadoop

HDFSクラスタ上でKerberos認証を有効化する場合は、パスワードを実行時に解決できるように、Kerberosプリンシパルとkeytabファイルの場所を構成する必要があります。

gg.eventHandler.name.kerberosPrincipal=principal
gg.eventHandler.name.kerberosKeytabFile=path_to_the_keytab_file

8.2.17.2.3 ORCイベント・ハンドラの構成

プロパティ・ファイルを使用して、ORCハンドラの操作を構成します。これらのプロパティは、Javaアダプタ・プロパティ・ファイルにあります(Replicatプロパティ・ファイルにはありません)

ORCイベント・ハンドラは、ファイル・ライター・ハンドラと組み合せてのみ機能します。

ORCハンドラの選択を有効にするには、まずgg.eventhandler.name.type=orcおよびその他のORCプロパティを次のように指定してハンドラ・タイプを構成する必要があります。

表8-20 ORCイベント・ハンドラの構成プロパティ

プロパティ 必須/オプション 有効な値 デフォルト 説明

gg.eventhandler.name.type

必須

ORC

なし

ORCイベント・ハンドラを選択します。

gg.eventhandler.name.writeToHDFS

オプション

true | false

false

ORCフレームワークを使用すると、HDFSに直接書き込むことができます。ローカル・ファイル・システムに書き込むには、falseに設定します。HDFSに直接書き込むには、trueに設定します。

gg.eventhandler.name.pathMappingTemplate

必須

ファイルを書き込むORCバケットのパスを動的に生成するために使用される、解決可能なキーワードと定数を含む文字列。

なし

定数とインタレースされたキーワードを使用して、一意のORCパス名を実行時に動的に生成します。パス名は、通常、/ogg/data/${groupName}/${fullyQualifiedTableName}の形式に従います。テンプレート・キーワードを参照してください。

gg.eventhandler.name.fileMappingTemplate

オプション

実行時にORCファイル名を動的に生成するために使用される、解決可能なキーワードと定数を含む文字列。

なし

実行時にORCデータ・ファイル名を動的に生成するために使用される、解決可能なキーワードと定数を使用します。設定しない場合、アップストリームのファイル名が使用されます。テンプレート・キーワードを参照してください。

gg.eventhandler.name.compressionCodec

オプション

LZ4 | LZO | NONE | SNAPPY | ZLIB

NONE

生成されたORCファイルの圧縮コーデックを設定します。

gg.eventhandler.name.finalizeAction

オプション

none | delete

none

ファイナライズ・アクションでORCデータ・ファイルをそのままにするには、noneを設定します。ファイナライズ・アクションでORCデータ・ファイルを削除するには、deleteを設定します。

gg.eventhandler.name.kerberosPrincipal

オプション

Kerberosプリンシパル名。

なし

HDFSに直接書き込み、Kerberos認証が有効になっている場合は、Kerberosプリンシパルを設定します。

gg.eventhandler.name.kerberosKeytabFile

オプション

Kerberos keytabファイルのパス。

none

HDFSに直接書込み、HDFS Kerberos認証が有効になっている場合は、Kerberos keytabファイルのパスを設定します。

gg.eventhandler.name.blockPadding

オプション

true | false

true

生成されたORCファイルでブロック埋込みを有効にするには、falseを設定し、無効にするには、trueを設定します。

gg.eventhandler.name.blockSize

オプション

long

ORCのデフォルト。

生成されたORCファイルのブロック・サイズを設定します。

gg.eventhandler.name.bufferSize

オプション

integer

ORCのデフォルト。

生成されたORCファイルのバッファ・サイズを設定します。

gg.eventhandler.name.encodingStrategy

オプション

COMPRESSION | SPEED

ORCのデフォルト。

ORCエンコーディング方式が圧縮または高速化のいずれのために最適化されるかを設定します。

gg.eventhandler.name.paddingTolerance

オプション

浮動小数点数で表されるパーセント。

ORCのデフォルト。

生成されたORCファイルの埋込み許容度のパーセントを設定します。

gg.eventhandler.name.rowIndexStride

オプション

integer

ORCのデフォルト。

生成されたORCファイルの行インデックス・ストライドを設定します。

gg.eventhandler.name.stripeSize

オプション

integer

ORCのデフォルト。

生成されたORCファイルのストライプ・サイズを設定します。

gg.eventhandler.name.eventHandler

オプション

子イベント・ハンドラを相互参照する一意の文字列識別子。

イベント・ハンドラは構成されない。

ファイル・ロール・イベントで呼び出されるイベント・ハンドラ。イベント・ハンドラは、S3またはHDFSへのファイルのロードなどのファイル・ロール・イベント・アクションを実行できます。

gg.eventhandler.name.bloomFilterFpp

オプション

偽陽性の確率はゼロより大きく、1より小さくする必要があります。たとえば、.25.75はどちらも有効な値ですが、01は無効です。

Apache ORCのデフォルト。

ブルーム・フィルタ索引の問合せの偽陽性を設定し、検索対象の値がブロック内にあるという結果が示されますが、値は実際にはブロック内にありません。

ブルーム・フィルタを設定する表および列を設定する必要があります。次の構成構文を使用して、ブルーム・フィルタを設定する表および列を選択します。

gg.eventhandler.orc.bloomFilter.QASOURCE.TCUSTMER=CUST_CODE
gg.eventhandler.orc.bloomFilter.QASOURCE.TCUSTORD=CUST_CODE,ORDER_DATE

QASOURCE.TCUSTMERおよびQASOURCE.TCUSTORDは、ソース表の完全修飾名です。構成値は、ブルーム・フィルタを構成する1つ以上の列です。列名はカンマで区切ります。

gg.eventhandler.name.bloomFilterVersion

オプション

ORIGINAL | UTF8

ORIGINAL

ORCブルーム・フィルタのバージョンを設定します。

8.2.17.2.4 Optimized Row Columnarイベント・ハンドラ・クライアント依存性

Optimized Row Columnar (OCR)ハンドラの依存性とはどのようなものでしょう。

Maven Central RepositoryのORCのアーティファクトは次のとおりです。

Maven groupId: org.apache.orc

Maven atifactId: orc-core

Maven version: 1.6.9

ORCイベント・ハンドラにはHadoopクライアント依存性も必要です。「Hadoopクライアント依存性」を参照してください。

8.2.17.2.4.1 ORC Client 1.6.9
aircompressor-0.19.jar
annotations-17.0.0.jar
commons-lang-2.6.jar
commons-lang3-3.12.0.jar
hive-storage-api-2.7.1.jar
jaxb-api-2.2.11.jar
orc-core-1.6.9.jar
orc-shims-1.6.9.jar
protobuf-java-2.5.0.jar
slf4j-api-1.7.5.jar
threeten-extra-1.5.0.jar
8.2.17.2.4.2 ORC Client 1.5.5
aircompressor-0.10.jar
asm-3.1.jar
commons-cli-1.2.jar
commons-codec-1.4.jar
commons-collections-3.2.1.jar
commons-compress-1.4.1.jar
commons-configuration-1.6.jar
commons-httpclient-3.1.jar
commons-io-2.1.jar
commons-lang-2.6.jar
commons-logging-1.1.1.jar
commons-math-2.1.jar
commons-net-3.1.jar
guava-11.0.2.jar
hadoop-annotations-2.2.0.jar
hadoop-auth-2.2.0.jar
hadoop-common-2.2.0.jar
hadoop-hdfs-2.2.0.jar
hive-storage-api-2.6.0.jar
jackson-core-asl-1.8.8.jar
jackson-mapper-asl-1.8.8.jar
jaxb-api-2.2.11.jar
jersey-core-1.9.jar
jersey-server-1.9.jar
jsch-0.1.42.jar
log4j-1.2.17.jar
orc-core-1.5.5.jar
orc-shims-1.5.5.jar
protobuf-java-2.5.0.jar
slf4j-api-1.7.5.jar
slf4j-log4j12-1.7.5.jar
xmlenc-0.52.jar
zookeeper-3.4.5.jar
8.2.17.2.4.3 ORC Client 1.4.0
aircompressor-0.3.jar 
apacheds-i18n-2.0.0-M15.jar 
apacheds-kerberos-codec-2.0.0-M15.jar 
api-asn1-api-1.0.0-M20.jar 
api-util-1.0.0-M20.jar 
asm-3.1.jar 
commons-beanutils-core-1.8.0.jar 
commons-cli-1.2.jar 
commons-codec-1.4.jar 
commons-collections-3.2.2.jar 
commons-compress-1.4.1.jar 
commons-configuration-1.6.jar 
commons-httpclient-3.1.jar 
commons-io-2.4.jar 
commons-lang-2.6.jar 
commons-logging-1.1.3.jar 
commons-math3-3.1.1.jar 
commons-net-3.1.jar 
curator-client-2.6.0.jar 
curator-framework-2.6.0.jar 
gson-2.2.4.jar 
guava-11.0.2.jar 
hadoop-annotations-2.6.4.jar 
hadoop-auth-2.6.4.jar 
hadoop-common-2.6.4.jar 
hive-storage-api-2.2.1.jar 
htrace-core-3.0.4.jar 
httpclient-4.2.5.jar 
httpcore-4.2.4.jar 
jackson-core-asl-1.9.13.jar 
jdk.tools-1.6.jar 
jersey-core-1.9.jar 
jersey-server-1.9.jar 
jsch-0.1.42.jar 
log4j-1.2.17.jar 
netty-3.7.0.Final.jar 
orc-core-1.4.0.jar 
protobuf-java-2.5.0.jar 
slf4j-api-1.7.5.jar 
slf4j-log4j12-1.7.5.jar 
xmlenc-0.52.jar 
xz-1.0.jar 
zookeeper-3.4.6.jar

8.2.17.3 Parquet

Parquetを使用して、ファイル・ライター・ハンドラによって生成されたファイルをHDFSにロードする方法について学習します。

フラット・ファイル」を参照してください。

8.2.17.3.1 Parquetハンドラ

Parquetイベント・ハンドラを使用すると、Parquet形式のデータ・ファイルを生成できます。Parquetファイルはローカル・ファイル・システムまたはHDFSに直接書き込むことができます。Parquetは、データ取得時間、およびOracle GoldenGate for Distributed Applications and Analytics (GG for DAA)の分析のパフォーマンスが大幅に向上する列データ形式です。https://parquet.apache.org/を参照してください。

8.2.17.3.2 機能の詳細

8.2.17.3.2.1 HDFSに書き込むParquetイベント・ハンドラの構成

Apache Parquetフレームワークは、HDFSへの直接書込みをサポートします。Parquetイベント・ハンドラはParquetファイルを直接HDFSに書き込むことができます。次の追加の構成ステップが必要です。

Parquetイベント・ハンドラの依存性と考慮事項は、HDFSハンドラと同じです。「HDFSのその他の考慮事項」を参照してください。

writeToHDFSプロパティをtrueに設定します。

gg.eventhandler.parquet.writeToHDFS=true

gg.classpathにHDFSクライアント・ライブラリが含まれていることを確認します。

HDFS core-site.xmlファイルを含むディレクトリがgg.classpathにあることを確認します。これは、core-site.xmlファイルを実行時に読み取ることができ、HDFSへの接続情報を解決できるようにしています。たとえば:

gg.classpath=/{HDFS_install_directory}/etc/hadoop

HDFSクラスタ上でKerberos認証が有効化されている場合は、パスワードを実行時に解決できるように、Kerberosプリンシパルとkeytabファイルの場所を構成する必要があります。

gg.eventHandler.name.kerberosPrincipal=principal
gg.eventHandler.name.kerberosKeytabFile=path_to_the_keytab_file
8.2.17.3.2.2 アップストリーム・データ形式について

Parquetイベント・ハンドラは、ファイル・ライター・ハンドラによって生成されたAvroオブジェクト・コンテナ・ファイル(OCF)のみを変換できます。Parquetイベント・ハンドラは他の形式をParquetデータ・ファイルに変換できません。ファイル・ライター・ハンドラの形式は、avro_row_ocfまたはavro_op_ocfである必要があります。「フラット・ファイル」を参照してください。

8.2.17.3.3 Parquetイベント・ハンドラの構成

プロパティ・ファイルを使用して、Parquetイベント・ハンドラの操作を構成します。これらのプロパティは、Javaアダプタ・プロパティ・ファイルにあります(Replicatプロパティ・ファイルにはありません)

Parquetイベント・ハンドラは、ファイル・ライター・ハンドラと組み合せてのみ機能します。

Parquetイベント・ハンドラの選択を有効にするには、まずgg.eventhandler.name.type=parquetおよびその他のParquetイベント・プロパティを次のように指定してハンドラ・タイプを構成する必要があります。

表8-21 Parquetイベント・ハンドラの構成プロパティ

プロパティ 必須/オプション 有効な値 デフォルト 説明

gg.eventhandler.name.type

必須

parquet

なし

使用するParquetイベント・ハンドラを選択します。

gg.eventhandler.name.writeToHDFS

オプション

true | false

false

ローカル・ファイル・システムに書き込むには、falseに設定します。HDFSに直接書き込むには、trueに設定します。

gg.eventhandler.name.pathMappingTemplate

必須

生成されたParquetファイルを書き込むパスを動的に生成するために使用される、解決可能なキーワードと定数を含む文字列。

なし

定数とインタレースされたキーワードを使用して、一意のパス名を実行時に動的に生成します。パス名は、通常、/ogg/data/${groupName}/${fullyQualifiedTableName}の形式に従います。テンプレート・キーワードを参照してください。

gg.eventhandler.name.fileNameMappingTemplate

オプション

実行時にParquetファイル名を動的に生成するために使用される、解決可能なキーワードと定数を含む文字列

なし

Parquetファイル名を設定します。設定しない場合、アップストリームのファイル名が使用されます。テンプレート・キーワードを参照してください。

gg.eventhandler.name.compressionCodec

オプション

GZIP | LZO | SNAPPY | UNCOMPRESSED

UNCOMPRESSED

生成されたParquetファイルの圧縮コーデックを設定します。

gg.eventhandler.name.finalizeAction

オプション

none | delete

none

ファイナライズ・アクションでのParquetイベント・ハンドラの動作を示します。

none

データ・ファイルをそのままにします。

delete

データ・ファイルを削除します(データ・ファイルが別の形式に変換されていたり、サード・パーティ・アプリケーションにロードされている場合)。

gg.eventhandler.name.dictionaryEncoding

オプション

true | false

Parquetのデフォルト。

Parquetディクショナリ・エンコーディングを有効にするには、trueに設定します。

gg.eventhandler.name.validation

オプション

true | false

Parquetのデフォルト。

Parquet検証を有効にするには、trueに設定します。

gg.eventhandler.name.dictionaryPageSize

オプション

整数

Parquetのデフォルト。

Parquetディクショナリのページ・サイズを設定します。

gg.eventhandler.name.maxPaddingSize

オプション

整数

Parquetのデフォルト。

Parquet埋込みサイズを設定します。

gg.eventhandler.name.pageSize

オプション

整数

Parquetのデフォルト。

Parquetページ・サイズを設定します。

gg.eventhandler.name.rowGroupSize

オプション

整数

Parquetのデフォルト。

Parquet行グループ・サイズを設定します。

gg.eventhandler.name.kerberosPrincipal

オプション

Kerberosプリンシパル名。

なし

HDFSに直接書き込み、Kerberos認証が有効になっている場合は、Kerberosプリンシパルに設定します。

gg.eventhandler.name.kerberosKeytabFile

オプション

Kerberos keytabファイルのパス。

Parquetのデフォルト。

HDFSに直接書込み、HDFS Kerberos認証が有効になっている場合は、Kerberos keytabファイルのパスに設定します。

gg.eventhandler.name.eventHandler

オプション

子イベント・ハンドラを相互参照する一意の文字列識別子。

イベント・ハンドラは構成されない。

ファイル・ロール・イベントで呼び出されるイベント・ハンドラ。イベント・ハンドラは、S3へのファイルのロード、ParquetまたはORC形式への変換、HDFSへのファイルのロードなどのファイル・ロール・イベントのアクションを実行できます。

gg.eventhandler.name.writerVersion オプション v1|v2 Parquetバージョン1.11.0を介して起動されるParquetライブラリのデフォルトは、v1です。 Parquetライターのバージョンを設定する機能を許可します。

8.2.17.3.4 Parquetイベント・ハンドラ・クライアント依存性

Parquetイベント・ハンドラの依存性とはどのようなものでしょう。

Maven Central RepositoryのParquetのアーティファクトは次のとおりです。

Maven groupId: org.apache.parquet

Maven atifactId: parquet-avro

Maven version: 1.9.0

Maven groupId: org.apache.parquet

Maven atifactId: parquet-hadoop

Maven version: 1.9.0

Parquetイベント・ハンドラにはHadoopクライアント依存性も必要です。「Hadoopクライアント依存性」を参照してください。

8.2.17.3.4.1 Parquetクライアント1.12.0
audience-annotations-0.12.0.jar
avro-1.10.1.jar
commons-compress-1.20.jar
commons-pool-1.6.jar
jackson-annotations-2.11.3.jar
jackson-core-2.11.3.jar
jackson-databind-2.11.3.jar
javax.annotation-api-1.3.2.jar
parquet-avro-1.12.0.jar
parquet-column-1.12.0.jar
parquet-common-1.12.0.jar
parquet-encoding-1.12.0.jar
parquet-format-structures-1.12.0.jar
parquet-hadoop-1.12.0.jar
parquet-jackson-1.12.0.jar
slf4j-api-1.7.22.jar
snappy-java-1.1.8.jar
zstd-jni-1.4.9-1.jar
8.2.17.3.4.2 Parquetクライアント1.11.1
audience-annotations-0.11.0.jar
avro-1.9.2.jar
commons-compress-1.19.jar
commons-pool-1.6.jar
jackson-annotations-2.10.2.jar
jackson-core-2.10.2.jar
jackson-databind-2.10.2.jar
javax.annotation-api-1.3.2.jar
parquet-avro-1.11.1.jar
parquet-column-1.11.1.jar
parquet-common-1.11.1.jar
parquet-encoding-1.11.1.jar
parquet-format-structures-1.11.1.jar
parquet-hadoop-1.11.1.jar
parquet-jackson-1.11.1.jar
slf4j-api-1.7.22.jar
snappy-java-1.1.7.3.jar
8.2.17.3.4.3 Parquetクライアント1.10.1
avro-1.8.2.jar
commons-codec-1.10.jar
commons-compress-1.8.1.jar
commons-pool-1.6.jar
fastutil-7.0.13.jar
jackson-core-asl-1.9.13.jar
jackson-mapper-asl-1.9.13.jar
paranamer-2.7.jar
parquet-avro-1.10.1.jar
parquet-column-1.10.1.jar
parquet-common-1.10.1.jar
parquet-encoding-1.10.1.jar
parquet-format-2.4.0.jar
parquet-hadoop-1.10.1.jar
parquet-jackson-1.10.1.jar
slf4j-api-1.7.2.jar
snappy-java-1.1.2.6.jar
xz-1.5.jar
8.2.17.3.4.4 Parquetクライアント1.9.0
avro-1.8.0.jar 
commons-codec-1.5.jar 
commons-compress-1.8.1.jar 
commons-pool-1.5.4.jar 
fastutil-6.5.7.jar 
jackson-core-asl-1.9.11.jar 
jackson-mapper-asl-1.9.11.jar 
paranamer-2.7.jar 
parquet-avro-1.9.0.jar 
parquet-column-1.9.0.jar 
parquet-common-1.9.0.jar 
parquet-encoding-1.9.0.jar 
parquet-format-2.3.1.jar 
parquet-hadoop-1.9.0.jar 
parquet-jackson-1.9.0.jar 
slf4j-api-1.7.7.jar 
snappy-java-1.1.1.6.jar 
xz-1.5.jar