5 ファイル・ライター・ハンドラの使用
ファイル・ライター・ハンドラおよび関連イベント・ハンドラを使用する方法について説明します。これらのハンドラを使用すると、データ・ファイルをローカル・システムに書き込むことができます。
トピック:
- 概要
ファイル・ライター・ハンドラとイベント・ハンドラを使用してデータを変換する方法について説明します。 - HDFSイベント・ハンドラの使用
HDFSイベント・ハンドラを使用して、ファイル・ライター・ハンドラによって生成されたファイルをHDFSにロードする方法について説明します。 - Optimized Row Columnarイベント・ハンドラの使用
Optimized Row Columnar (ORC)イベント・ハンドラを使用して、ORC形式のデータ・ファイルを生成する方法について説明します。 - Oracle Cloud Infrastructureイベント・ハンドラの使用
Oracle Cloud Infrastructureイベント・ハンドラを使用して、ファイル・ライター・ハンドラによって生成されたファイルをOracle Cloud Infrastructureオブジェクト・ストアにロードする方法について説明します。 - Oracle Cloud Infrastructure Classicイベント・ハンドラの使用
Oracle Cloud Infrastructure Classicイベント・ハンドラを使用して、ファイル・ライター・ハンドラによって生成されたファイルをOracle Cloud Infrastructure Classicオブジェクト・ストアにロードする方法について説明します。 - Parquetイベント・ハンドラの使用
Parquetイベント・ハンドラを使用して、ファイル・ライター・ハンドラによって生成されたファイルをHDFSにロードする方法について説明します。 - S3イベント・ハンドラの使用
Amazon S3 Webサービスへのインタフェースを提供するS3イベント・ハンドラを使用する方法について説明します。
5.1 概要
ファイル・ライター・ハンドラとイベント・ハンドラを使用してデータを変換する方法について説明します。
ファイル・ライター・ハンドラは、区切りテキスト、XML、JSON、AvroおよびAvroオブジェクト・コンテナ・ファイル形式でのデータ・ファイルの生成をサポートします。抽出、ロードおよび変換のユースケースに対応するためのものです。データ・ファイルは、ローカル・ファイル・システム上にステージングされます。その後、データ・ファイルへの書込みが完了すると、サード・パーティ・アプリケーションを使用して、追加処理を実行するファイルを読み取ることができます。
ファイル・ライター・ハンドラは、イベント・ハンドラ・フレームワークもサポートしています。イベント・ハンドラ・フレームワークを使用すると、ファイル・ライター・ハンドラで生成されたデータ・ファイルを、Optimized Row Columnar (ORC)やParquetなどの他の形式に変換できます。データ・ファイルは、HDFSやAmazon S3などのサード・パーティ・アプリケーションにロードできます。イベント・ハンドラ・フレームワークは、より多くのイベント・ハンドラが様々な変換を実行したり、開発される別のターゲットにロードできるように拡張できます。また、ビッグ・データ環境用のカスタム・イベント・ハンドラを開発できます。
Oracle GoldenGate for Big Dataには、HDFSに書き込む2つのハンドラが用意されています。次の状況では、HDFSハンドラまたはファイル・ライター・ハンドラを使用することをお薦めします。
- HDFSイベント・ハンドラが、HDFSにデータを直接ストリーミングするように設計されています。
-
HDFSで書込み後処理が発生しません。HDFSイベント・ハンドラではファイルの内容を変更せず、単に、既存のファイルをHDFSにアップロードします。
分析ツールが、開いていて頻繁に書き込まれるファイル内のデータなど、HDFSに書き込まれるデータにリアルタイムでアクセスします。
- -ファイル・ライター・ハンドラが、ファイルの書込みが完了したときにローカル・ファイル・システムにデータをステージングし、完了したデータ・ファイルをHDFSにロードするように設計されています。
-
分析ツールが、HDFSに書き込まれるデータにリアルタイムでアクセスしません。
データを変換、リフォーマット、マージおよび最終的な場所に移動する書込み後処理がHDFSで発生します。
データ・ファイルがORCまたはParquet形式でHDFSに書き込まれます。
トピック:
5.1.1 機能の詳細
トピック:
5.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プロセスの停止。
操作シーケンス
ファイル・ロール・イベントによって、操作のシーケンスの発生がトリガーされます。個々のデータファイルがロールされたときに発生する操作の順序を理解することが重要です。
-
アクティブなデータ・ファイルが非アクティブに切り替えられ、データ・ファイルがフラッシュされて、状態データ・ファイルがフラッシュされます。
-
構成されたイベント・ハンドラは、指定された順序で呼び出されます。
-
ファイナライズ・アクションは、すべてのイベント・ハンドラで、構成した順序と逆の順序で実行されます。構成したすべてのファイナライズ・アクションが実行されます。
-
ファイナライズ・アクションは、データ・ファイルおよび状態ファイルに対して実行されます。すべてのアクションが正常に完了すると、状態ファイルが削除されます。構成したすべてのファイナライズ・アクションが実行されます。
たとえば、Parquetイベント・ハンドラとS3イベント・ハンドラを使用してファイル・ライター・ハンドラを構成する場合、ロール・イベントの順序は次のようになります。
-
アクティブなデータ・ファイルが非アクティブに切り替えられ、データ・ファイルがフラッシュされて、状態データ・ファイルがフラッシュされます。
-
Parquetイベント・ハンドラが呼び出され、ソース・データ・ファイルからParquetファイルが生成されます。
-
S3イベント・ハンドラが呼び出され、生成されたParquetファイルがS3にロードされます。
-
ファイナライズ・アクションが、S3 Parquetイベント・ハンドラに対して実行されます。構成したすべてのファイナライズ・アクションが実行されます。
-
ファイナライズ・アクションが、Parquetイベント・ハンドラに対して実行されます。構成したすべてのファイナライズ・アクションが実行されます。
-
ファイナライズ・アクションが、ファイル・ライター・ハンドラのデータ・ファイルに対して実行されます
親トピック: 機能の詳細
5.1.1.2 自動ディレクトリの作成
親トピック: 機能の詳細
5.1.1.3 アクティブな書込み接尾辞について
一般的なユースケースでは、サード・パーティ・アプリケーションを使用して、データ・ファイルを読み取る書込みディレクトリを監視します。サード・パーティ・アプリケーションは、ファイルへの書込みが完了した場合にのみデータ・ファイルを読み取ることができます。これらのアプリケーションでは、データ・ファイルへの書込みがアクティブであるか、または完了しているかを判別する方法が必要になります。ファイル・ライター・ハンドラを使用すると、次のプロパティを使用してアクティブな書込み接尾辞を構成できます。
gg.handler.name.fileWriteActiveSuffix=.tmp
このプロパティの値は、生成されたファイル名に付加されます。ファイルへの書込みが完了すると、データ・ファイルの名前が変更され、アクティブな書込み接尾辞がファイル名から削除されます。データ・ファイル名を監視し、アクティブな書込み接尾辞がいつ削除されたかを識別するように、サード・パーティ・アプリケーションを設定できます。
親トピック: 機能の詳細
5.1.1.4 状態のメンテナンス
これまでは、すべてのOracle GoldenGate for Big Dataハンドラがステートレスでした。これらのステートレス・ハンドラでは、実行していたReplicatプロセスのコンテキストでの状態のみを保持します。Replicatプロセスを停止して再起動した場合、すべての状態が失われていました。Replicatを再起動すると、ハンドラは、前回の実行時の状況の認識がない状態で書込みを開始しました。
ファイル・ライター・ハンドラは、Replicatプロセスの呼出し間で状態を維持するための機能を提供します。デフォルトでは、再起動に伴って次のことが実行されます。
-
状態保存ファイルが読み取られます。
-
状態がリストアされます。
-
前回の実行が停止した位置からアクティブ・データ・ファイルの追加が続行されます。
次のプロパティを設定することで、このデフォルトのアクションから、シャットダウン時にすべてのファイルのロールが必要になるように変更できます。
gg.handler.name.rollOnShutdown=true
親トピック: 機能の詳細
5.1.1.5 テンプレート文字列の使用
テンプレート文字列には、実行時に動的に解決されるリテラルとキーワードの組合せを含めることができます。ORCイベント・ハンドラは、テンプレート文字列を多用して、ORCディレクトリ名、データ・ファイル名およびORCバケット名を生成します。これらの文字列によって、データ・ファイルおよびデータ・ファイルの名前を書き込む場所を柔軟に選択できます。ファイルおよびディレクトリの名前を選択する場合は、異常終了の原因となる可能性があるファイル命名の競合を回避するように注意する必要があります。
サポートされているテンプレート文字列
キーワード | 説明 |
---|---|
${fullyQualifiedTableName} |
ピリオド( |
${catalogName} |
個々のソース・カタログ名。たとえば、 |
${schemaName} |
個々のソース・スキーマ名。たとえば、 |
${tableName} |
個々のソース表名。たとえば、 |
${groupName} |
Replicatプロセスの名前(調整された適用を使用する場合は、スレッド番号を含む)。 |
${emptyString} |
空の文字列になります。たとえば、 |
${operationCount} |
データ・ファイル内の操作の合計数。名前変更か、イベント・ハンドラで使用する必要があります。それ以外の場合、何もまだ書き込まれていないため、ゼロ( |
${insertCount} |
データ・ファイル内の挿入操作の合計数。名前変更か、イベント・ハンドラで使用する必要があります。それ以外の場合、何もまだ書き込まれていないため、ゼロ( |
${updateCount} |
データ・ファイル内の更新操作の合計数。名前変更か、イベント・ハンドラで使用する必要があります。それ以外の場合、何もまだ書き込まれていないため、ゼロ( |
${deleteCount} |
データ・ファイル内の削除操作の合計数。名前変更か、イベント・ハンドラで使用する必要があります。それ以外の場合、何もまだ書き込まれていないため、ゼロ( |
${truncateCount} |
データ・ファイル内の切捨て操作の合計数。名前変更か、イベント・ハンドラで使用する必要があります。それ以外の場合、何もまだ書き込まれていないため、ゼロ( |
${currentTimestamp} |
現在のタイムスタンプ。日時のデフォルトの出力形式は
この形式は、Javaの |
${toUpperCase[]} |
角カッコ内のコンテンツを大文字に変換します。たとえば、 |
${toLowerCase[]} |
角カッコ内のコンテンツを小文字に変換します。たとえば、 |
テンプレート文字列の構成では、キーワードおよび静的文字列の組合せを使用して、実行時にパスとデータ・ファイル名を構成できます。
要件
テンプレートを使用して生成されたディレクトリ名およびファイル名は、書込み先のシステム上で有効である必要があります。ファイル名の競合を避けるために、ファイル名は一意である必要があります。${currentTimestamp}
キーワードを使用して、現在のタイムスタンプを追加すると、競合を回避できます。調整された適用を使用している場合は、データ・ファイル名に${groupName}
を追加することをお薦めします。
親トピック: 機能の詳細
5.1.2 ファイル・ライター・ハンドラの構成
ファイル・ライター・ハンドラの構成可能な値を示しています。これらのプロパティは、Javaアダプタ・プロパティ・ファイルにあります(Replicatプロパティ・ファイルにはありません)
ファイル・ライター・ハンドラの選択を有効にするには、まずgg.handler.jdbc.type=filewriter
およびその他のファイル・ライター・プロパティを次のように指定してハンドラ・タイプを構成する必要があります。
表5-1 ファイル・ライター・ハンドラの構成プロパティ
プロパティ | 必須/オプション | 有効な値 | デフォルト | 説明 |
---|---|---|---|---|
|
必須 |
|
なし |
使用するファイル・ライター・ハンドラを選択します。 |
|
オプション |
デフォルトの測定単位はバイトです。 |
1g |
ファイル・ライター・ハンドラによって生成されるファイルの最大ファイル・サイズを設定します。ファイル・サイズが超過すると、ロール・イベントがトリガーされます。 |
|
オプション |
デフォルトの測定単位はミリ秒です。 |
ファイルのローリング・オン時間がオフ。 |
タイマーは、ファイルが作成されるときにスタートします。間隔が経過したときにまだファイルが開いている場合、ファイル・ロール・イベントがトリガーされます。 |
|
オプション |
デフォルトの測定単位はミリ秒です。 |
ファイルの非アクティブ・ローリングがオフ。 |
タイマーは、生成されたファイルへの前回の書込みからスタートします。生成されたファイルへの新しい書込みでカウンタが再開されます。タイマーが経過したときにまだファイルが開いている場合、ロール・イベントがトリガーされます。 |
|
必須 |
実行時にファイル・ライター・ハンドラのデータ・ファイル名を動的に生成するために使用される、解決可能なキーワードと定数を含む文字列。 |
なし |
定数とともにインタレースされるキーワードを使用して、一意のパス名を実行時に動的に生成します。パス名は、通常、 |
|
必須 |
ファイルが書き込まれるディレクトリを動的に生成するために使用される、解決可能なキーワードと定数を含む文字列。 |
なし |
定数とともにインタレースされるキーワードを使用して、一意のパス名を実行時に動的に生成します。パス名は、通常、 |
|
オプション |
文字列。 |
なし |
ファイルへの書込みがアクティブであることを示すために、ファイル・ライター・ハンドラによって生成されたファイルに付加されるオプションの接尾辞。ファイナライズ・アクションで、接尾辞が削除されます。 |
|
必須 |
ファイル・ライター・ハンドラの状態ファイルを格納するローカル・マシン上のディレクトリ。 |
なし |
ファイル・ライター・ハンドラの状態ファイルを格納するローカル・マシン上のディレクトリを設定します。調整された適用環境での操作時に機能するように、グループ名がディレクトリに追加されます。 |
|
オプション |
|
|
|
|
オプション |
|
|
ファイナライズ・アクションでのファイル・ライター・ハンドラの動作を示します。
|
|
オプション |
|
|
|
|
オプション |
|
イベント・ハンドラは構成されない。 |
イベント・ハンドラを相互参照する一意の文字列識別子。イベント・ハンドラは、ファイル・ロール・イベントで呼び出されます。イベント・ハンドラは、S3へのファイルのロード、ParquetまたはORC形式への変換、HDFSへのファイルのロードなどのファイル・ロール・イベントのアクションを実行できます。 |
|
|
ファイナライズ・アクションにおけるファイルの名前変更用にファイル・ライター・ハンドラのデータ・ファイル名を動的に生成するために使用される、解決可能なキーワードと定数を含む文字列。 |
なし。 |
定数とともにインタレースされるキーワードを使用して、一意のファイル名を実行時に動的に生成します。ファイル名は、通常、 |
|
|
ファイルが書き込まれるディレクトリを動的に生成するために使用される、解決可能なキーワードと定数を含む文字列。 |
なし |
定数とともにインタレースされるキーワードを使用して、一意のパス名を実行時に動的に生成します。パス名は、通常、 |
|
必須 |
|
|
出力データのフォーマット方法について、HDFSハンドラのフォーマッタを選択します
ParquetまたはORCイベント・ハンドラを使用する場合、選択した形式が |
|
オプション |
16進文字の偶数。 |
なし |
各2文字がバイト・オーダー・マーク(BOM)で1バイトに対応している16進文字の偶数を入力します。たとえば、文字列 |
|
オプション |
|
|
制御ファイルを作成するには、 |
|
オプション |
任意の文字列 |
改行( |
制御ファイルで区切り文字で区切られたファイル名を制御できます。このプロパティでは |
|
オプション |
制御ファイルを格納するディレクトリのパス。 |
ピリオド( |
制御ファイルを作成する場所を指定するように設定されます。 |
|
オプション |
|
|
所有者ファイルを作成するには、 |
|
オプション |
開いているすべてのファイルのロール・アクションをトリガーするために1回以上。 |
なし |
次の形式で1つ以上のトリガー時刻を構成します。 HH:MM,HH:MM,HH:MM エントリは24時間制に基づきます。たとえば、1日のうち3回個別の時刻にロールされるアクションを構成するエントリは次のとおりです。 gg.handler.fw.atTime=03:30,21:00,23:51 |
|
オプション |
圧縮なし。 |
|
生成されたAvro OCFファイルに対応する圧縮アルゴリズムを有効にします。圧縮を有効にしたら、対応する圧縮ライブラリを |
|
オプション |
|
正の整数 >= 512 |
アクティブな書込みストリームごとに |
親トピック: 概要
5.1.3 サンプル構成の確認
このファイル・ライター・ハンドラの構成例では、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.handler.name.includetokens=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 goldengate.userexit.writers=javawriter
親トピック: 概要
5.2 HDFSイベント・ハンドラの使用
HDFSイベント・ハンドラを使用して、ファイル・ライター・ハンドラによって生成されたファイルをHDFSにロードする方法について説明します。
「ファイル・ライター・ハンドラの使用」を参照してください。
トピック:
親トピック: ファイル・ライター・ハンドラの使用
5.2.1 機能の詳細
トピック:
5.2.1.1 ハンドラの構成
HDFSイベント・ハンドラは、データ・ファイルをHDFSにアップロードできます。次の追加の構成ステップが必要です。
HDFSイベント・ハンドラの依存性と考慮事項は、HDFSハンドラと同じです。「HDFSのその他の考慮事項」を参照してください。
gg.classpath
にHDFSクライアント・ライブラリが含まれていることを確認します。
HDFS core-site.xml
ファイルを含むディレクトリがgg.classpath
にあることを確認します。これは、core-site.xml
ファイルを実行時に読み取ることができ、HDFSへの接続情報を解決できるようにしています。次に例を示します。
gg.classpath=/{HDFSinstallDirectory}/etc/hadoop
HDFSクラスタ上でKerberos認証が有効化されている場合は、パスワードを実行時に解決できるように、Kerberosプリンシパルとkeytab
ファイルの場所を構成する必要があります。
gg.eventHandler.name.kerberosPrincipal=principal
gg.eventHandler.name.kerberosKeytabFile=pathToTheKeytabFile
親トピック: 機能の詳細
5.2.1.2 テンプレート文字列の使用
テンプレート文字列には、実行時に動的に解決されるリテラルとキーワードの組合せを含めることができます。HDFSイベント・ハンドラは、テンプレート文字列を多用して、HDFSディレクトリ名、データ・ファイル名およびHDFSバケット名を生成します。これにより、データ・ファイルおよびデータ・ファイルの名前を書き込む場所を柔軟に選択できます。
サポートされているテンプレート文字列
キーワード | 説明 |
---|---|
${fullyQualifiedTableName} |
ピリオド( |
${catalogName} |
個々のソース・カタログ名。たとえば、 |
${schemaName} |
個々のソース・スキーマ名。たとえば、 |
${tableName} |
個々のソース表名。たとえば、 |
${groupName} |
Replicatプロセスの名前(調整された適用を使用する場合は、スレッド番号を含む)。 |
${emptyString} |
空の文字列になります。たとえば、 |
${operationCount} |
データ・ファイル内の操作の合計数。名前変更か、イベント・ハンドラで使用する必要があります。それ以外の場合、何もまだ書き込まれていないため、ゼロ( |
${insertCount} |
データ・ファイル内の挿入操作の合計数。名前変更か、イベント・ハンドラで使用する必要があります。それ以外の場合、何もまだ書き込まれていないため、ゼロ( |
${updateCount} |
データ・ファイル内の更新操作の合計数。名前変更か、イベント・ハンドラで使用する必要があります。それ以外の場合、何もまだ書き込まれていないため、ゼロ( |
${deleteCount} |
データ・ファイル内の削除操作の合計数。名前変更か、イベント・ハンドラで使用する必要があります。それ以外の場合、何もまだ書き込まれていないため、ゼロ( |
${truncateCount} |
データ・ファイル内の切捨て操作の合計数。名前変更か、イベント・ハンドラで使用する必要があります。それ以外の場合、何もまだ書き込まれていないため、ゼロ( |
${currentTimestamp} |
現在のタイムスタンプ。日時のデフォルトの出力形式は
この形式は、Javaの |
${toUpperCase[]} |
角カッコ内のコンテンツを大文字に変換します。たとえば、 |
${toLowerCase[]} |
角カッコ内のコンテンツを小文字に変換します。たとえば、 |
テンプレート文字列の構成では、キーワードおよび静的文字列の組合せを使用して、実行時にパスとデータ・ファイル名を構成できます。
親トピック: 機能の詳細
5.2.1.3 HDFSイベント・ハンドラの構成
プロパティ・ファイルを使用して、HDFSハンドラの操作を構成します。これらのプロパティは、Javaアダプタ・プロパティ・ファイルにあります(Replicatプロパティ・ファイルにはありません)。
HDFSイベント・ハンドラの選択を有効にするには、まずgg.eventhandler.jdbc.type=hdfs
およびその他のHDFSイベント・プロパティを次のように指定してハンドラ・タイプを構成する必要があります。
表5-2 HDFSイベント・ハンドラの構成プロパティ
プロパティ | 必須/オプション | 有効な値 | デフォルト | 説明 |
---|---|---|---|---|
|
必須 |
|
なし |
使用するHDFSイベント・ハンドラを選択します。 |
|
必須 |
データ・ファイルを書き込むHDFSのパスを動的に生成するために使用される、解決可能なキーワードと定数を含む文字列。 |
なし |
定数とともにインタレースされるキーワードを使用して、一意のパス名を実行時に動的に生成します。パス名は、通常、 |
|
オプション |
実行時にHDFSファイル名を動的に生成するために使用される、解決可能なキーワードと定数を含む文字列。 |
なし |
定数とともにインタレースされるキーワードを使用して、一意のファイル名を実行時に動的に生成します。設定しない場合、アップストリームのファイル名が使用されます。 |
|
オプション |
|
|
ファイナライズ・アクションでのファイル・ライター・ハンドラの動作を示します。
|
|
オプション |
Kerberosプリンシパル名。 |
なし |
HDFS Kerberos認証が有効になっている場合は、Kerberosプリンシパルに設定します。 |
|
オプション |
Kerberos |
なし |
HDFS Kerberos認証が有効になっている場合は、Kerberos |
|
オプション |
子イベント・ハンドラを相互参照する一意の文字列識別子。 |
イベント・ハンドラは構成されない。 |
イベント・ハンドラを相互参照する一意の文字列識別子。イベント・ハンドラは、ファイル・ロール・イベントで呼び出されます。イベント・ハンドラは、S3へのファイルのロード、ParquetまたはORC形式への変換、HDFSへのファイルのロードなどのファイル・ロール・イベントのアクションを実行できます。 |
親トピック: 機能の詳細
5.3 Optimized Row Columnarイベント・ハンドラの使用
Optimized Row Columnar (ORC)イベント・ハンドラを使用して、ORC形式のデータ・ファイルを生成する方法について説明します。
トピック:
親トピック: ファイル・ライター・ハンドラの使用
5.3.1 概要
ORCは、データ取得時間とビッグ・データ分析のパフォーマンスが大幅に向上する行および列形式です。ORCイベント・ハンドラを使用して、ローカル・ファイル・システムまたはHDFSに直接ORCファイルを書き込むことができます。詳細は、https://orc.apache.org/を参照してください。
5.3.2 機能の詳細
トピック:
5.3.2.1 アップストリーム・データ形式について
ORCイベント・ハンドラは、ファイル・ライター・ハンドラによって生成されたAvroオブジェクト・コンテナ・ファイル(OCF)のみを変換できます。ORCイベント・ハンドラは他の形式をORCデータ・ファイルに変換できません。ファイル・ライター・ハンドラの形式は、avro_row_ocf
またはavro_op_ocf
である必要があります。「ファイル・ライター・ハンドラの使用」を参照してください。
親トピック: 機能の詳細
5.3.2.2 ライブラリの依存性について
ORCファイルを生成するには、Apache ORCライブラリおよびHDFSクライアント・ライブラリの両方が必要です。「Optimized Row Columnarイベント・ハンドラ・クライアント依存性」および「HDFSハンドラ・クライアント依存性」を参照してください。
Oracle GoldenGate for Big Dataには、Apache ORCライブラリもHDFSクライアント・ライブラリも含まれていません。依存性ライブラリを含めるには、gg.classpath
変数を構成する必要があります。
親トピック: 機能の詳細
5.3.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
親トピック: 機能の詳細
5.3.2.4 テンプレート文字列の使用
テンプレート文字列には、実行時に動的に解決されるリテラルとキーワードの組合せを含めることができます。ORCイベント・ハンドラは、テンプレート文字列を多用して、ORCディレクトリ名、データ・ファイル名およびORCバケット名を生成します。これにより、データ・ファイルおよびデータ・ファイルの名前を書き込む場所を柔軟に選択できます。
サポートされているテンプレート文字列
キーワード | 説明 |
---|---|
${fullyQualifiedTableName} |
ピリオド( |
${catalogName} |
個々のソース・カタログ名。たとえば、 |
${schemaName} |
個々のソース・スキーマ名。たとえば、 |
${tableName} |
個々のソース表名。たとえば、 |
${groupName} |
Replicatプロセスの名前(調整された適用を使用する場合は、スレッド番号を含む)。 |
${emptyString} |
空の文字列になります。たとえば、 |
${operationCount} |
データ・ファイル内の操作の合計数。名前変更か、イベント・ハンドラで使用する必要があります。それ以外の場合、何もまだ書き込まれていないため、ゼロ( |
${insertCount} |
データ・ファイル内の挿入操作の合計数。名前変更か、イベント・ハンドラで使用する必要があります。それ以外の場合、何もまだ書き込まれていないため、ゼロ( |
${updateCount} |
データ・ファイル内の更新操作の合計数。名前変更か、イベント・ハンドラで使用する必要があります。それ以外の場合、何もまだ書き込まれていないため、ゼロ( |
${deleteCount} |
データ・ファイル内の削除操作の合計数。名前変更か、イベント・ハンドラで使用する必要があります。それ以外の場合、何もまだ書き込まれていないため、ゼロ( |
${truncateCount} |
データ・ファイル内の切捨て操作の合計数。名前変更か、イベント・ハンドラで使用する必要があります。それ以外の場合、何もまだ書き込まれていないため、ゼロ( |
${currentTimestamp} |
現在のタイムスタンプ。日時のデフォルトの出力形式は
この形式は、Javaの |
${toUpperCase[]} |
角カッコ内のコンテンツを大文字に変換します。たとえば、 |
${toLowerCase[]} |
角カッコ内のコンテンツを小文字に変換します。たとえば、 |
テンプレート文字列の構成では、キーワードおよび静的文字列の組合せを使用して、実行時にパスとデータ・ファイル名を構成できます。
親トピック: 機能の詳細
5.3.3 ORCイベント・ハンドラの構成
プロパティ・ファイルを使用して、ORCハンドラの操作を構成します。これらのプロパティは、Javaアダプタ・プロパティ・ファイルにあります(Replicatプロパティ・ファイルにはありません)。
ORCイベント・ハンドラは、ファイル・ライター・ハンドラと組み合せてのみ機能します。
ORCハンドラの選択を有効にするには、まずgg.eventhandler.name.type=orc
およびその他のORCプロパティを次のように指定してハンドラ・タイプを構成する必要があります。
表5-3 ORCイベント・ハンドラの構成プロパティ
プロパティ | 必須/オプション | 有効な値 | デフォルト | 説明 |
---|---|---|---|---|
|
必須 |
|
なし |
ORCイベント・ハンドラを選択します。 |
|
オプション |
|
|
ORCフレームワークを使用すると、HDFSに直接書き込むことができます。ローカル・ファイル・システムに書き込むには、 |
|
必須 |
ファイルを書き込むORCバケットのパスを動的に生成するために使用される、解決可能なキーワードと定数を含む文字列。 |
なし |
定数とともにインタレースされるキーワードを使用して、一意のORCパス名を実行時に動的に生成します。パス名は、通常、 |
|
オプション |
実行時にORCファイル名を動的に生成するために使用される、解決可能なキーワードと定数を含む文字列。 |
なし |
実行時にORCデータ・ファイル名を動的に生成するために使用される、解決可能なキーワードと定数を使用します。設定しない場合、アップストリームのファイル名が使用されます。 |
|
オプション |
|
|
生成されたORCファイルの圧縮コーデックを設定します。 |
|
オプション |
|
|
ファイナライズ・アクションでORCデータ・ファイルをそのままにするには、 |
|
オプション |
Kerberosプリンシパル名。 |
なし |
HDFSに直接書き込み、Kerberos認証が有効になっている場合は、Kerberosプリンシパルを設定します。 |
|
オプション |
Kerberos |
|
HDFSに直接書込み、HDFS Kerberos認証が有効になっている場合は、Kerberos |
|
オプション |
|
|
生成されたORCファイルでブロック埋込みを有効にするには、 |
|
オプション |
|
ORCのデフォルト。 |
生成されたORCファイルのブロック・サイズを設定します。 |
|
オプション |
|
ORCのデフォルト。 |
生成されたORCファイルのバッファ・サイズを設定します。 |
|
オプション |
|
ORCのデフォルト。 |
ORCエンコーディング方式が圧縮または高速化のいずれのために最適化されるかを設定します。 |
|
オプション |
浮動小数点数で表されるパーセント。 |
ORCのデフォルト。 |
生成されたORCファイルの埋込み許容度のパーセントを設定します。 |
|
オプション |
|
ORCのデフォルト。 |
生成されたORCファイルの行インデックス・ストライドを設定します。 |
|
オプション |
|
ORCのデフォルト。 |
生成されたORCファイルのストライプ・サイズを設定します。 |
|
オプション |
子イベント・ハンドラを相互参照する一意の文字列識別子。 |
イベント・ハンドラは構成されない。 |
ファイル・ロール・イベントで呼び出されるイベント・ハンドラ。イベント・ハンドラは、S3またはHDFSへのファイルのロードなどのファイル・ロール・イベント・アクションを実行できます。 |
|
オプション |
偽陽性の確率はゼロより大きく、1より小さくする必要があります。たとえば、 |
Apache ORCのデフォルト。 |
ブルーム・フィルタ索引の問合せの偽陽性を設定し、検索対象の値がブロック内にあるという結果が示されますが、値は実際にはブロック内にありません。 ブルーム・フィルタを設定する表および列を設定する必要があります。次の構成構文を使用して、ブルーム・フィルタを設定する表および列を選択します。 gg.eventhandler.orc.bloomFilter.QASOURCE.TCUSTMER=CUST_CODE gg.eventhandler.orc.bloomFilter.QASOURCE.TCUSTORD=CUST_CODE,ORDER_DATE
|
|
オプション |
|
|
ORCブルーム・フィルタのバージョンを設定します。 |
5.4 Oracle Cloud Infrastructureイベント・ハンドラの使用
Oracle Cloud Infrastructureイベント・ハンドラを使用して、ファイル・ライター・ハンドラによって生成されたファイルをOracle Cloud Infrastructureオブジェクト・ストアにロードする方法について説明します。
トピック:
- 概要
- 機能の詳細
- Oracle Cloud Infrastructureイベント・ハンドラの構成
- Oracle Cloud Infrastructureの資格証明の構成
- テンプレート文字列の使用
- トラブルシューティング
親トピック: ファイル・ライター・ハンドラの使用
5.4.1 概要
Oracle Cloud Infrastructure Object Storageサービスは、信頼性およびコスト効率が高いデータ耐久性を実現するインターネット規模の高パフォーマンス・ストレージ・プラットフォームです。Object Storageサービスは、分析データやリッチ・コンテンツ(イメージやビデオなど)を含め、あらゆるコンテンツ・タイプの非構造化データを無制限に格納できます。https://cloud.oracle.com/en_US/cloud-infrastructureを参照してください。
ファイル・ライター・ハンドラでサポートされるフォーマット・ハンドラはすべて使用できます。
5.4.2 機能の詳細
Oracle Cloud Infrastructureイベント・ハンドラには、Oracle Cloud Infrastructure Object Storageにファイルを転送するためのOracle Cloud Infrastructure Javaソフトウェア開発キット(SDK)が必要です。Oracle GoldenGate for Big Dataには、Oracle Cloud Infrastructure Java SDKが付属していません。 https://docs.cloud.oracle.com/iaas/Content/API/Concepts/sdkconfig.htmを参照してください。
Oracle Cloud Infrastructure Java SDKは、次の場所でダウンロードする必要があります。
https://docs.us-phoenix-1.oraclecloud.com/Content/API/SDKDocs/javasdk.htm
JARファイルを永続ディレクトリに解凍します。ハンドラには、Oracle Cloud Infrastructure SDK JARがあるJARライブラリ・ディレクトリとサード・パーティのJARライブラリの2つのディレクトリが必要です。両方のディレクトリは、gg.classpath
にある必要があります。
環境変数gg.classpath
を指定し、Oracle Cloud Infrastructure Java SDKのJARファイルを含めます。
例
gg.classpath=/usr/var/oci/lib/*:/usr/var/oci/third-party/lib/*
5.4.3 Oracle Cloud Infrastructureイベント・ハンドラの構成
Oracle Cloud Infrastructureイベント・ハンドラの操作は、プロパティ・ファイルを使用して構成します。これらのプロパティは、Javaアダプタ・プロパティ・ファイルにあります(Replicatプロパティ・ファイルにはありません)。
Oracle Cloud Infrastructureイベント・ハンドラは、ファイル・ライター・ハンドラとの組合せでのみ機能します。
Oracle Cloud Infrastructureイベント・ハンドラの選択を有効にするには、まずgg.eventhandler.name.type=oci
を指定してハンドラ・タイプを構成してから、次に示す他のOracle Cloud Infrastructureプロパティを構成する必要があります。
表5-4 Oracle Cloud Infrastructureイベント・ハンドラの構成プロパティ
プロパティ | 必須/オプション | 有効な値 | デフォルト | 説明 |
---|---|---|---|---|
|
必須 |
|
なし |
Oracle Cloud Infrastructureイベント・ハンドラを選択します。 |
|
必須 |
イベント・ハンドラの |
なし |
構成ファイルの名前および場所。 |
|
必須 |
プロファイル名を表す有効な文字列。 |
なし |
Oracle Cloud Infrastructureの |
|
必須 |
Oracle Cloud Infrastructureのネームスペース。 |
なし |
ネームスペースは、すべてのバケットおよびオブジェクトの最上位レベルのコンテナとして機能し、ユーザーのテナント内のバケット命名を制御できます。オブジェクト・ストレージのネームスペースは、アカウントの作成時に割り当てられるシステム生成文字列です。ネームスペース文字列は、Oracle Cloud Infrastructureコンソールの使用中に「Object Storage Settings」に示されます。 |
|
必須 |
Oracle Cloud Infrastructureのリージョン。 |
なし |
Oracle Cloud Infrastructureのサーバーおよびデータはリージョンでホストされ、ローカライズされた地理的領域です。サポートされているリージョンは4つあります。次に例を示します。 London Heathrow("uk-london-1") Frankfurt("eu-frankfurt-1") Ashburn("us-ashburn-1") Phoenix("us-phoenix-1"). |
|
必須 |
有効なコンパートメントID。 |
なし |
コンパートメントは、Oracle Cloud Infrastructureのリソースを編成するための論理コンテナです。 |
|
必須 |
ファイルを書き込むOracle Cloud Infrastructureバケットのパスを動的に生成するために使用される、解決可能なキーワードと定数を含む文字列。 |
なし |
定数とともにインタレースされるキーワードを使用して、実行時に一意のOracle Cloud Infrastructureパス名を動的に生成します。 |
|
オプション |
実行時にOracle Cloud Infrastructureファイル名を動的に生成するために使用される、解決可能なキーワードと定数を含む文字列。 |
なし |
解決可能なキーワードと定数を使用して、実行時にOracle Cloud Infrastructureデータ・ファイル名を動的に生成します。設定しない場合、アップストリームのファイル名が使用されます。 |
|
必須 |
ファイルを書き込むOracle Cloud Infrastructureバケットのパスを動的に生成するために使用される、解決可能なキーワードと定数を含む文字列。 |
なし |
解決可能なキーワードと定数を使用して、実行時にOracle Cloud Infrastructureバケット名を動的に生成します。Oracle Cloud Infrastructureバケットが存在しない場合、イベント・ハンドラはOracle Cloud Infrastructureバケットを作成しようとします。 |
|
オプション |
|
|
ファイナライズ・アクションでOracle Cloud Infrastructureデータ・ファイルを残す場合は、 |
|
オプション |
子イベント・ハンドラを相互参照する一意の文字列識別子。 |
イベント・ハンドラは構成されません。 |
ファイル・ロール・イベントで呼び出されるイベント・ハンドラを設定します。イベント・ハンドラは、S3へのファイルのロード、ParquetまたはORCフォーマットへの変換、HDFSへのファイルのロード、Oracle Cloud Infrastructure Storage Classicへのファイルのロード、Oracle Cloud Infrastructureへのファイルのロードなどのファイル・ロール・イベント・アクションを実行できます。 |
サンプル構成
gg.eventhandler.oci.type=oci gg.eventhandler.oci.configFilePath=~/.oci/config gg.eventhandler.oci.profile=DEFAULT gg.eventhandler.oci.namespace=dwcsdemo gg.eventhandler.oci.region=us-ashburn-1 gg.eventhandler.oci.compartmentID=ocid1.compartment.oc1..aaaaaaaajdg6iblwgqlyqpegf6kwdais2gyx3guspboa7fsi72tfihz2wrba gg.eventhandler.oci.pathMappingTemplate=${schemaName} gg.eventhandler.oci.bucketMappingTemplate=${schemaName} gg.eventhandler.oci.fileNameMappingTemplate=${tableName}_${currentTimestamp}.txt gg.eventhandler.oci.finalizeAction=NONE
5.4.4 Oracle Cloud Infrastructureの資格証明の構成
Java SDKが機能するには、ユーザー資格証明などの基本構成情報およびOracle Cloud InfrastructureのテナントOracle Cloud ID (OCID)が必要です。https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htmを参照してください。
理想的な構成ファイルには、user
、fingerprint
、key_file
、tenancy
およびregion
の各キーとそれぞれの値が含まれます。デフォルトの構成ファイルの名前と場所は、~/.oci/config
です。
次のように、config
ファイルを作成します。
-
Oracle GoldenGate for Big Dataホーム・ディレクトリに
.oci
というディレクトリを作成します。 -
テキスト・ファイルを作成し、
config
と名前を付けます。 -
次のプロパティの値を取得します。
-
user
-
-
Oracle Cloud Infrastructureコンソール(https://console.us-ashburn-1.oraclecloud.com)にログインします。
-
「Username」をクリックします。
-
「User Settings」をクリックします。
ユーザーのOCIDが表示され、これがキー・ユーザーの値です。
-
-
tenancy
-
テナントIDがコンソール・ページの下部に表示されます。
-
region
-
コンソールのヘッダー・セッション・ドロップダウン・メニューでリージョンが表示されます。
-
fingerprint
-
フィンガープリントを生成するには、次のキーのフィンガープリントの取得方法の手順に従います。
https://docs.cloud.oracle.com/iaas/Content/API/Concepts/apisigningkey.htm
-
key_file
-
Oracle Cloud Infrastructureとの接続を確立するには、公開キーと秘密キーを共有する必要があります。キーを生成するには、次のAPI署名キーの生成方法に従います。
https://docs.cloud.oracle.com/iaas/Content/API/Concepts/apisigningkey.htm
-
構成ファイルの例
user=ocid1.user.oc1..aaaaaaaat5nvwcna5j6aqzqedqw3rynjq fingerprint=20:3b:97:13::4e:c5:3a:34 key_file=~/.oci/oci_api_key.pem tenancy=ocid1.tenancy.oc1..aaaaaaaaba3pv6wkcr44h25vqstifs
5.4.5 テンプレート文字列の使用
テンプレート文字列には、実行時に動的に解決されるリテラルとキーワードの組合せを含めることができます。このイベント・ハンドラは、テンプレート文字列を大量に使用して、Oracle Cloud Infrastructureディレクトリ名、データ・ファイル名およびOracle Cloud Infrastructureバケット名を生成します。これらの文字列によって、データ・ファイルおよびデータ・ファイルの名前を書き込む場所を柔軟に選択できます。ファイルおよびディレクトリの名前を選択する場合は、異常終了の原因となる可能性があるファイル命名の競合を回避するように注意する必要があります。
サポートされているテンプレート文字列
キーワード | 説明 |
---|---|
${fullyQualifiedTableName} |
ピリオド( |
${catalogName} |
個々のソース・カタログ名。たとえば、 |
${schemaName} |
個々のソース・スキーマ名。たとえば、 |
${tableName} |
個々のソース表名。たとえば、 |
${groupName} |
Replicatプロセスの名前(調整された適用を使用する場合は、スレッド番号を含む)。 |
${emptyString} |
空の文字列になります。たとえば、 |
${operationCount} |
データ・ファイル内の操作の合計数。名前変更か、イベント・ハンドラで使用する必要があります。それ以外の場合、何もまだ書き込まれていないため、ゼロ( |
${insertCount} |
データ・ファイル内の挿入操作の合計数。名前変更か、イベント・ハンドラで使用する必要があります。それ以外の場合、何もまだ書き込まれていないため、ゼロ( |
${updateCount} |
データ・ファイル内の更新操作の合計数。名前変更か、イベント・ハンドラで使用する必要があります。それ以外の場合、何もまだ書き込まれていないため、ゼロ( |
${deleteCount} |
データ・ファイル内の削除操作の合計数。名前変更か、イベント・ハンドラで使用する必要があります。それ以外の場合、何もまだ書き込まれていないため、ゼロ( |
${truncateCount} |
データ・ファイル内の切捨て操作の合計数。名前変更か、イベント・ハンドラで使用する必要があります。それ以外の場合、何もまだ書き込まれていないため、ゼロ( |
${currentTimestamp} |
現在のタイムスタンプ。日時のデフォルトの出力形式は
この形式は、Javaの |
${toUpperCase[]} |
角カッコ内のコンテンツを大文字に変換します。たとえば、 |
${toLowerCase[]} |
角カッコ内のコンテンツを小文字に変換します。たとえば、 |
テンプレート文字列の構成では、キーワードおよび静的文字列の組合せを使用して、実行時にパスとデータ・ファイル名を構成できます。
要件
テンプレートを使用して生成されたディレクトリ名およびファイル名は、書込み先のシステム上で有効である必要があります。ファイル名の競合を避けるために、ファイル名は一意である必要があります。${currentTimestamp}
キーワードを使用して、現在のタイムスタンプを追加すると、競合を回避できます。調整された適用を使用している場合は、データ・ファイル名に${groupName}
を追加することをお薦めします。
5.4.6 トラブルシューティング
接続の問題。
オンプレミスの実行時にイベント・ハンドラがOracle Cloud Infrastructure Classicオブジェクトに接続できない場合、パブリック・インターネットへの接続がプロキシ・サーバーによって保護されている可能性があります。プロキシ・サーバーは、企業のプライベート・ネットワークとパブリック・インターネットとの間のゲートウェイとして機能します。ネットワーク管理者に連絡して、プロキシ・サーバーのURLを取得し、プロキシ・サーバーを設定します。
Oracle GoldenGate for Big Dataは、次の例のように、プロキシ・サーバーを有効にする次のJava実行時引数を使用して、プロキシ・サーバーとともに使用できます。
-Dhttps.proxyHost=www-proxy.us.company.com -Dhttps.proxyPort=80
ClassNotFoundExceptionエラー
最も一般的な初期エラーは、必要なすべてのクライアント・ライブラリが含まれていない正しくないクラスパスで、これによりClassNotFoundException
エラーが発生します。Oracle Cloud Infrastructure Java SDKの必要なJARファイルをすべて含めるためにgg.classpath
変数を指定します。機能の詳細を参照してください。
5.5 Oracle Cloud Infrastructure Classicイベント・ハンドラの使用
Oracle Cloud Infrastructure Classicイベント・ハンドラを使用して、ファイル・ライター・ハンドラによって生成されたファイルをOracle Cloud Infrastructure Classicオブジェクト・ストアにロードする方法について説明します。
トピック:
親トピック: ファイル・ライター・ハンドラの使用
5.5.1 概要
Oracle Cloud Infrastructure Object Classicサービスは、ファイルや非構造化データに対してエンタープライズ仕様の大規模オブジェクト・ストレージ・ソリューションを提供するInfrastructure as a Service (IaaS)製品です。https://cloud.oracle.com/storage-classicを参照してください。
ファイル・ライター・ハンドラでサポートされるフォーマット・ハンドラはすべて使用できます。
5.5.2 機能の詳細
Oracle Cloud Infrastructure Classicイベント・ハンドラには、Oracle Cloud Infrastructure Classicにファイルを転送するファイル転送マネージャ(FTM) Java SDKが必要です。Oracle GoldenGate for Big Dataには、FTM Java SDKが付属していません。
FTM Java SDKは、次の場所でダウンロードする必要があります。
http://www.oracle.com/technetwork/topics/cloud/downloads/index.html#storejavasdk
JARファイルを永続ディレクトリに解凍します。ハンドラには、Oracle Cloud Infrastructure SDK JARがあるJARライブラリ・ディレクトリとサード・パーティのJARライブラリの2つのディレクトリが必要です。両方のディレクトリは、gg.classpath
にある必要があります。
環境変数gg.classpath
を指定し、FTM Java SDKのJARファイルを含めます。
必要なサード・パーティのJARは次のとおりです。
ftm-api-2.4.4.jar javax.json-1.0.4.jar slf4j-api-1.7.7.jar slf4j-log4j12-1.7.7.jar log4j-1.2.17-16.jar low-level-api-core-1.14.22.jar
例
gg.classpath=/usr/var/ftm-sdk/libs/*:
5.5.3 Oracle Cloud Infrastructure Classicイベント・ハンドラの構成
Oracle Cloud Infrastructure Classicハンドラの操作は、プロパティ・ファイルを使用して構成します。これらのプロパティは、Javaアダプタ・プロパティ・ファイルにあります(Replicatプロパティ・ファイルにはありません)。
Oracle Cloud Infrastructure Classicイベント・ハンドラは、ファイル・ライター・ハンドラとの組合せでのみ機能します。
Oracle Cloud Infrastructure Classicイベント・ハンドラの選択を有効にするには、まずgg.eventhandler.name.type=oci-c
を指定してハンドラ・タイプを構成してから、次に示す他のOracle Cloud Infrastructureプロパティを構成する必要があります。
表5-5 Oracle Cloud Infrastructure Classicイベント・ハンドラの構成プロパティ
プロパティ | 必須/オプション | 有効な値 | デフォルト | 説明 |
---|---|---|---|---|
|
必須 |
|
なし |
Oracle Cloud Infrastructure Classicイベント・ハンドラを選択します。 |
|
必須 |
サーバーURL |
なし |
Oracle Cloud Infrastructure Classicイベント・ハンドラのサーバーURL。 |
|
必須 |
|
なし |
Oracle Cloud Infrastructureコンソールにサインインするときに指定する、大/小文字を区別するテナントID。 |
|
必須 |
Oracle Cloud Infrastructure Classicイベント・ハンドラのサービス・インスタンス名。 |
なし |
指定したOracle Cloud Infrastructure Classicイベント・ハンドラのサービス・インスタンス名。 |
|
必須 |
有効なユーザー名。 |
なし |
Oracle Cloud Infrastructureユーザー・アカウントのユーザー名。 |
|
必須 |
有効なパスワード。 |
なし |
Oracle Cloud Infrastructureユーザー・アカウントのパスワード。 |
|
必須 |
ファイルを書き込むOracle Cloud Infrastructureバケットのパスを動的に生成するために使用される、解決可能なキーワードと定数を含む文字列。 |
なし |
解決可能なキーワードと定数を使用して、実行時に一意のOracle Cloud Infrastructure Classicのパス名を動的に生成します。 |
|
必須 |
ファイルを書き込むOracle Cloud Infrastructureコンテナのパスを動的に生成するために使用される、解決可能なキーワードと定数を含む文字列。 |
なし |
解決可能なキーワードと定数を使用して、実行時にOracle Cloud Infrastructureコンテナ名を動的に生成します。Oracle Cloud Infrastructureコンテナが存在しない場合、イベント・ハンドラはOracle Cloud Infrastructureコンテナを作成しようとします。 |
|
オプション |
実行時にOracle Cloud Infrastructureファイル名を動的に生成するために使用される、解決可能なキーワードと定数を含む文字列。 |
なし |
解決可能なキーワードと定数を使用して、実行時にOracle Cloud Infrastructureファイル名を動的に生成します。設定しない場合、アップストリームのファイル名が使用されます。 |
|
オプション |
|
|
ファイナライズ・アクションでOracle Cloud Infrastructure Classicデータ・ファイルを残す場合は、 |
|
オプション |
子イベント・ハンドラを相互参照する一意の文字列識別子。 |
イベント・ハンドラは構成されません。 |
ファイル・ロール・イベントで呼び出されるイベント・ハンドラを設定します。イベント・ハンドラは、S3へのファイルのロード、ParquetまたはORCフォーマットへの変換、HDFSへのファイルのロード、Oracle Cloud Infrastructure Classicへのファイルのロード、Oracle Cloud Infrastructureへのファイルのロードなどのファイル・ロール・イベント・アクションを実行できます。 |
サンプル構成
#The OCI-C Event handler gg.eventhandler.oci-c.type=oci-c gg.eventhandler.oci-c.serverURL=https://storage.companycloud.com/ gg.eventhandler.oci-c.tenantID=usoraclebig gg.eventhandler.oci-c.serviceName=dev1 gg.eventhandler.oci-c.username=user@company.com gg.eventhandler.oci-c.password=pass gg.eventhandler.oci-c.pathMappingTemplate=${schemaName} gg.eventhandler.oci-c.containerMappingTemplate=${schemaName} gg.eventhandler.oci-c.fileNameMappingTemplate=${tableName}_${currentTimestamp}.json gg.eventhandler.oci-c.finalizeAction=NONE
5.5.4 テンプレート文字列の使用
テンプレート文字列には、実行時に動的に解決されるリテラルとキーワードの組合せを含めることができます。このイベント・ハンドラは、テンプレート文字列を大量に使用して、Oracle Cloud Infrastructureディレクトリ名、データ・ファイル名およびOracle Cloud Infrastructureバケット名を生成します。これらの文字列によって、データ・ファイルおよびデータ・ファイルの名前を書き込む場所を柔軟に選択できます。ファイルおよびディレクトリの名前を選択する場合は、異常終了の原因となる可能性があるファイル命名の競合を回避するように注意する必要があります。
サポートされているテンプレート文字列
キーワード | 説明 |
---|---|
${fullyQualifiedTableName} |
ピリオド( |
${catalogName} |
個々のソース・カタログ名。たとえば、 |
${schemaName} |
個々のソース・スキーマ名。たとえば、 |
${tableName} |
個々のソース表名。たとえば、 |
${groupName} |
Replicatプロセスの名前(調整された適用を使用する場合は、スレッド番号を含む)。 |
${emptyString} |
空の文字列になります。たとえば、 |
${operationCount} |
データ・ファイル内の操作の合計数。名前変更か、イベント・ハンドラで使用する必要があります。それ以外の場合、何もまだ書き込まれていないため、ゼロ( |
${insertCount} |
データ・ファイル内の挿入操作の合計数。名前変更か、イベント・ハンドラで使用する必要があります。それ以外の場合、何もまだ書き込まれていないため、ゼロ( |
${updateCount} |
データ・ファイル内の更新操作の合計数。名前変更か、イベント・ハンドラで使用する必要があります。それ以外の場合、何もまだ書き込まれていないため、ゼロ( |
${deleteCount} |
データ・ファイル内の削除操作の合計数。名前変更か、イベント・ハンドラで使用する必要があります。それ以外の場合、何もまだ書き込まれていないため、ゼロ( |
${truncateCount} |
データ・ファイル内の切捨て操作の合計数。名前変更か、イベント・ハンドラで使用する必要があります。それ以外の場合、何もまだ書き込まれていないため、ゼロ( |
${currentTimestamp} |
現在のタイムスタンプ。日時のデフォルトの出力形式は
この形式は、Javaの |
${toUpperCase[]} |
角カッコ内のコンテンツを大文字に変換します。たとえば、 |
${toLowerCase[]} |
角カッコ内のコンテンツを小文字に変換します。たとえば、 |
テンプレート文字列の構成では、キーワードおよび静的文字列の組合せを使用して、実行時にパスとデータ・ファイル名を構成できます。
要件
テンプレートを使用して生成されたディレクトリ名およびファイル名は、書込み先のシステム上で有効である必要があります。ファイル名の競合を避けるために、ファイル名は一意である必要があります。${currentTimestamp}
キーワードを使用して、現在のタイムスタンプを追加すると、競合を回避できます。調整された適用を使用している場合は、データ・ファイル名に${groupName}
を追加することをお薦めします。
5.5.5 トラブルシューティング
接続の問題。
オンプレミスの実行時にイベント・ハンドラがOracle Cloud Infrastructure Classicオブジェクトに接続できない場合、パブリック・インターネットへの接続がプロキシ・サーバーによって保護されている可能性があります。プロキシ・サーバーは、企業のプライベート・ネットワークとパブリック・インターネットとの間のゲートウェイとして機能します。ネットワーク管理者に連絡して、プロキシ・サーバーのURLを取得し、プロキシ・サーバーを設定します。
Oracle GoldenGate for Big Dataは、次の例のように、プロキシ・サーバーを有効にする次のJava実行時引数を使用して、プロキシ・サーバーとともに使用できます。
-Dhttps.proxyHost=www-proxy.us.company.com -Dhttps.proxyPort=80
ClassNotFoundExceptionエラー
最も一般的な初期エラーは、必要なすべてのクライアント・ライブラリが含まれていない正しくないクラスパスで、これによりClassNotFoundException
エラーが発生します。Oracle Cloud Infrastructure Java SDKの必要なJARファイルをすべて含めるためにgg.classpath
変数を指定します。機能の詳細を参照してください。
5.6 Parquetイベント・ハンドラの使用
Parquetイベント・ハンドラを使用して、ファイル・ライター・ハンドラによって生成されたファイルをHDFSにロードする方法について説明します。
「ファイル・ライター・ハンドラの使用」を参照してください。
トピック:
5.6.1 概要
Parquetイベント・ハンドラを使用すると、Parquet形式のデータ・ファイルを生成できます。Parquetファイルはローカル・ファイル・システムまたはHDFSに直接書き込むことができます。Parquetは、データ取得時間とビッグ・データ分析のパフォーマンスが大幅に向上する列データ形式です。https://parquet.apache.org/を参照してください。
親トピック: Parquetイベント・ハンドラの使用
5.6.2 機能の詳細
トピック:
5.6.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
親トピック: 機能の詳細
5.6.2.2 アップストリーム・データ形式について
Parquetイベント・ハンドラは、ファイル・ライター・ハンドラによって生成されたAvroオブジェクト・コンテナ・ファイル(OCF)のみを変換できます。Parquetイベント・ハンドラは他の形式をParquetデータ・ファイルに変換できません。ファイル・ライター・ハンドラの形式は、avro_row_ocf
またはavro_op_ocf
である必要があります。「ファイル・ライター・ハンドラの使用」を参照してください。
親トピック: 機能の詳細
5.6.2.3 テンプレート文字列の使用
テンプレート文字列には、実行時に動的に解決されるリテラルとキーワードの組合せを含めることができます。Parquetイベント・ハンドラは、テンプレート文字列を多用して、HDFSディレクトリ名、データ・ファイル名およびHDFSバケット名を生成します。これにより、データ・ファイルおよびデータ・ファイルの名前を書き込む場所を柔軟に選択できます。
サポートされているテンプレート文字列
キーワード | 説明 |
---|---|
${fullyQualifiedTableName} |
ピリオド( |
${catalogName} |
個々のソース・カタログ名。たとえば、 |
${schemaName} |
個々のソース・スキーマ名。たとえば、 |
${tableName} |
個々のソース表名。たとえば、 |
${groupName} |
Replicatプロセスの名前(調整された適用を使用する場合は、スレッド番号を含む)。 |
${emptyString} |
空の文字列になります。たとえば、 |
${operationCount} |
データ・ファイル内の操作の合計数。名前変更か、イベント・ハンドラで使用する必要があります。それ以外の場合、何もまだ書き込まれていないため、ゼロ( |
${insertCount} |
データ・ファイル内の挿入操作の合計数。名前変更か、イベント・ハンドラで使用する必要があります。それ以外の場合、何もまだ書き込まれていないため、ゼロ( |
${updateCount} |
データ・ファイル内の更新操作の合計数。名前変更か、イベント・ハンドラで使用する必要があります。それ以外の場合、何もまだ書き込まれていないため、ゼロ( |
${deleteCount} |
データ・ファイル内の削除操作の合計数。名前変更か、イベント・ハンドラで使用する必要があります。それ以外の場合、何もまだ書き込まれていないため、ゼロ( |
${truncateCount} |
データ・ファイル内の切捨て操作の合計数。名前変更か、イベント・ハンドラで使用する必要があります。それ以外の場合、何もまだ書き込まれていないため、ゼロ( |
${currentTimestamp} |
現在のタイムスタンプ。日時のデフォルトの出力形式は
この形式は、Javaの |
${toUpperCase[]} |
角カッコ内のコンテンツを大文字に変換します。たとえば、 |
${toLowerCase[]} |
角カッコ内のコンテンツを小文字に変換します。たとえば、 |
テンプレート文字列の構成では、キーワードおよび静的文字列の組合せを使用して、実行時にパスとデータ・ファイル名を構成できます。
親トピック: 機能の詳細
5.6.3 Parquetイベント・ハンドラの構成
プロパティ・ファイルを使用して、Parquetイベント・ハンドラの操作を構成します。これらのプロパティは、Javaアダプタ・プロパティ・ファイルにあります(Replicatプロパティ・ファイルにはありません)。
Parquetイベント・ハンドラは、ファイル・ライター・ハンドラと組み合せてのみ機能します。
Parquetイベント・ハンドラの選択を有効にするには、まずgg.eventhandler.name.type=parquet
およびその他のParquetイベント・プロパティを次のように指定してハンドラ・タイプを構成する必要があります。
表5-6 Parquetイベント・ハンドラの構成プロパティ
プロパティ | 必須/オプション | 有効な値 | デフォルト | 説明 |
---|---|---|---|---|
|
必須 |
|
なし |
使用するParquetイベント・ハンドラを選択します。 |
|
オプション |
|
|
ローカル・ファイル・システムに書き込むには、 |
|
必須 |
生成されたParquetファイルを書き込むパスを動的に生成するために使用される、解決可能なキーワードと定数を含む文字列。 |
なし |
定数とともにインタレースされるキーワードを使用して、一意のパス名を実行時に動的に生成します。パス名は、通常、 |
|
オプション |
実行時にParquetファイル名を動的に生成するために使用される、解決可能なキーワードと定数を含む文字列 |
なし |
Parquetファイル名を設定します。設定しない場合、アップストリームのファイル名が使用されます。 |
|
オプション |
|
|
生成されたParquetファイルの圧縮コーデックを設定します。 |
|
オプション |
|
|
ファイナライズ・アクションでのParquetイベント・ハンドラの動作を示します。 |
|
オプション |
|
Parquetのデフォルト。 |
Parquetディクショナリ・エンコーディングを有効にするには、 |
|
オプション |
|
Parquetのデフォルト。 |
Parquet検証を有効にするには、 |
|
オプション |
整数 |
Parquetのデフォルト。 |
Parquetディクショナリのページ・サイズを設定します。 |
|
オプション |
整数 |
Parquetのデフォルト。 |
Parquet埋込みサイズを設定します。 |
|
オプション |
整数 |
Parquetのデフォルト。 |
Parquetページ・サイズを設定します。 |
|
オプション |
整数 |
Parquetのデフォルト。 |
Parquet行グループ・サイズを設定します。 |
|
オプション |
Kerberosプリンシパル名。 |
なし |
HDFSに直接書き込み、Kerberos認証が有効になっている場合は、Kerberosプリンシパルに設定します。 |
|
オプション |
Kerberos |
Parquetのデフォルト。 |
HDFSに直接書込み、HDFS Kerberos認証が有効になっている場合は、Kerberos |
|
オプション |
子イベント・ハンドラを相互参照する一意の文字列識別子。 |
イベント・ハンドラは構成されない。 |
ファイル・ロール・イベントで呼び出されるイベント・ハンドラ。イベント・ハンドラは、S3へのファイルのロード、ParquetまたはORC形式への変換、HDFSへのファイルのロードなどのファイル・ロール・イベントのアクションを実行できます。 |
親トピック: Parquetイベント・ハンドラの使用
5.7 S3イベント・ハンドラの使用
Amazon S3 Webサービスへのインタフェースを提供するS3イベント・ハンドラを使用する方法について説明します。
トピック:
親トピック: ファイル・ライター・ハンドラの使用
5.7.1 概要
Amazon S3は、Amazonクラウドでホストされているオブジェクト・ストレージです。S3イベント・ハンドラの目的は、ファイル・ライター・ハンドラによって生成されたデータ・ファイルをAmazon S3にロードすることです。https://aws.amazon.com/s3/を参照してください。
ファイル・ライター・ハンドラの任意の形式を使用できます。「ファイル・ライター・ハンドラの使用」を参照してください。
親トピック: S3イベント・ハンドラの使用
5.7.2 機能の詳細
S3イベント・ハンドラには、ファイルをS3オブジェクト・ストレージに移動するためにAmazon Web Services (AWS) Java SDKが必要です。Oracle GoldenGate for Big Dataには、AWS Java SDKが含まれていません。AWS Java SDKを次のサイトからダウンロードしてインストールする必要があります。
https://aws.amazon.com/sdk-for-java/
次に、AWS Java SDKのJARファイルが含まれ、2つのディレクトリに分割されるようにgg.classpath
変数を構成する必要があります。両方のディレクトリが、次のようにgg.classpath
にある必要があります。
gg.classpath=/usr/var/aws-java-sdk-1.11.240/lib/*:/usr/var/aws-java-sdk-1.11.240/third-party/lib/
トピック:
5.7.2.1 クライアントIDとシークレットの構成
クライアントIDおよびシークレットは、S3イベント・ハンドラがAmazon S3とやりとりするために必要な資格証明です。クライアントIDおよびシークレットは、Amazon AWSのWebサイトを使用して生成されます。これらの資格証明の取得とS3サーバーへの提示は、AWS Java SDKによってクライアント側で実行されます。AWS Java SDKにより、実行時にクライアントIDおよびシークレットを解決できる複数の方法が提供されます。
クライアントIDおよびシークレットは、Javaアダプタ・プロパティ・ファイルでJavaプロパティとして次のように1行で設定できます。
javawriter.bootoptions=-Xmx512m -Xms32m -Djava.class.path=ggjava/ggjava.jar -Daws.accessKeyId=your_access_key -Daws.secretKey=your_secret_key
これにより、ローカル・マシン上のAmazon Elastic Compute Cloud (Amazon EC2) AWS_ACCESS_KEY_ID
およびAWS_SECRET_ACCESS_KEY
変数を使用して環境変数が設定されます。
親トピック: 機能の詳細
5.7.2.2 AWS S3バケットについて
AWSでは、S3ストレージをバケットと呼ばれる個別のファイル・システムに分割します。S3イベント・ハンドラは、事前作成されたバケットに書き込むことができます。または、S3バケットが存在しない場合、S3イベント・ハンドラは、指定されたS3バケットを作成しようとします。AWSでは、S3バケット名を小文字にする必要があります。Amazon S3バケット名はグローバルに一意である必要があります。Amazonアカウントにすでに存在するS3バケットを作成しようとすると、S3イベント・ハンドラが異常終了します。
親トピック: 機能の詳細
5.7.2.3 テンプレート文字列の使用
テンプレート文字列には、実行時に動的に解決されるリテラルとキーワードの組合せを含めることができます。S3イベント・ハンドラは、テンプレート文字列を多用して、S3ディレクトリ名、データ・ファイル名およびS3バケット名を生成します。これにより、データ・ファイルおよびデータ・ファイルの名前を書き込む場所を柔軟に選択できます。
サポートされているテンプレート文字列
キーワード | 説明 |
---|---|
${fullyQualifiedTableName} |
ピリオド( |
${catalogName} |
個々のソース・カタログ名。たとえば、 |
${schemaName} |
個々のソース・スキーマ名。たとえば、 |
${tableName} |
個々のソース表名。たとえば、 |
${groupName} |
Replicatプロセスの名前(調整された適用を使用する場合は、スレッド番号を含む)。 |
${emptyString} |
空の文字列になります。たとえば、 |
${operationCount} |
データ・ファイル内の操作の合計数。名前変更か、イベント・ハンドラで使用する必要があります。それ以外の場合、何もまだ書き込まれていないため、ゼロ( |
${insertCount} |
データ・ファイル内の挿入操作の合計数。名前変更か、イベント・ハンドラで使用する必要があります。それ以外の場合、何もまだ書き込まれていないため、ゼロ( |
${updateCount} |
データ・ファイル内の更新操作の合計数。名前変更か、イベント・ハンドラで使用する必要があります。それ以外の場合、何もまだ書き込まれていないため、ゼロ( |
${deleteCount} |
データ・ファイル内の削除操作の合計数。名前変更か、イベント・ハンドラで使用する必要があります。それ以外の場合、何もまだ書き込まれていないため、ゼロ( |
${truncateCount} |
データ・ファイル内の切捨て操作の合計数。名前変更か、イベント・ハンドラで使用する必要があります。それ以外の場合、何もまだ書き込まれていないため、ゼロ( |
${currentTimestamp} |
現在のタイムスタンプ。日時のデフォルトの出力形式は
この形式は、Javaの |
${toUpperCase[]} |
角カッコ内のコンテンツを大文字に変換します。たとえば、 |
${toLowerCase[]} |
角カッコ内のコンテンツを小文字に変換します。たとえば、 |
テンプレート文字列の構成では、キーワードおよび静的文字列の組合せを使用して、実行時にパスとデータ・ファイル名を構成できます。
親トピック: 機能の詳細
5.7.2.4 トラブルシューティング
接続の問題。
オンプレミスで実行していて、S3イベント・ハンドラがS3オブジェクト・ストレージに接続できない場合は、プロキシ・サーバーによってパブリック・インターネットへの接続が保護されている可能性が高くなります。プロキシ・サーバーは、企業のプライベート・ネットワークとパブリック・インターネットとの間のゲートウェイとして機能します。ネットワーク管理者に連絡して、プロキシ・サーバーのURLを取得し、プロキシ・サーバーを設定します。
Oracle GoldenGateは、プロキシ・サーバーを使用可能にする次のパラメータを使用して、プロキシ・サーバーとともに使用できます。
gg.handler.name.proxyServer=
-
gg.handler.name.proxyPort=80
資格証明および次の構成パラメータを使用して、プロキシ・サーバーへのアクセスを保護できます。
gg.handler.name.proxyUsername=username
gg.handler.name.proxyPassword=password
サンプル構成:
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.proxyProtocol=HTTP
gg.eventhandler.s3.bucketMappingTemplate=yourbucketname
gg.eventhandler.s3.pathMappingTemplate=thepath
gg.eventhandler.s3.finalizeAction=none
親トピック: 機能の詳細
5.7.3 S3イベント・ハンドラの構成
プロパティ・ファイルを使用して、S3イベント・ハンドラの操作を構成します。これらのプロパティは、Javaアダプタ・プロパティ・ファイルにあります(Replicatプロパティ・ファイルにはありません)。
S3イベント・ハンドラの選択を有効にするには、まずgg.eventhandler.name.type=s3
およびその他のS3イベント・プロパティを次のように指定してハンドラ・タイプを構成する必要があります。
表5-7 S3イベント・ハンドラの構成プロパティ
プロパティ | 必須/オプション | 有効な値 | デフォルト | 説明 |
---|---|---|---|---|
|
必須 |
|
なし |
Replicatで使用するS3イベント・ハンドラを選択します。 |
|
必須 |
S3インスタンスをホストしているAWSリージョン名。 |
なし |
有効なAWSリージョン名の設定は必須です。 |
|
オプション |
プロキシ・サーバーのホスト名。 |
なし |
プロキシ・サーバーを使用したAWSへの接続が必要な場合は、プロキシ・サーバーのホスト名を設定します。 |
|
オプション |
プロキシ・サーバーのポート番号。 |
なし |
プロキシ・サーバーを使用したAWSへの接続が必要な場合は、プロキシ・サーバーのポート番号を設定します。 |
|
オプション |
プロキシ・サーバーのユーザー名。 |
なし |
プロキシ・サーバーを使用したAWSへの接続が必要で、かつ、プロキシ・サーバーによって資格証明が要求される場合は、プロキシ・サーバーのユーザー名を設定します。 |
|
オプション |
プロキシ・サーバーのパスワード。 |
なし |
プロキシ・サーバーを使用したAWSへの接続が必要で、かつ、プロキシ・サーバーによって資格証明が要求される場合は、プロキシ・サーバーのユーザー名のパスワードを設定します。 |
|
必須 |
ファイルを書き込むS3バケットのパスを動的に生成するために使用される、解決可能なキーワードと定数を含む文字列。 |
なし |
実行時にS3バケット名を動的に生成するために使用される、解決可能なキーワードと定数を使用します。S3バケットが存在しない場合、ハンドラはS3バケットを作成しようとします。AWSでは、バケット名はすべて小文字にする必要があります。大文字を使用したバケット名によって、実行時例外が発生します。 |
|
必須 |
ファイルを書き込むS3バケットのパスを動的に生成するために使用される、解決可能なキーワードと定数を含む文字列。 |
なし |
定数とともにインタレースされるキーワードを使用して、一意のS3パス名を実行時に動的に生成します。通常パス名は、 |
|
オプション |
実行時にS3ファイル名を動的に生成するために使用される、解決可能なキーワードと定数を含む文字列。 |
なし |
実行時にS3データ・ファイル名を動的に生成するために使用される、解決可能なキーワードと定数を使用します。設定しない場合、アップストリームのファイル名が使用されます。 |
|
オプション |
|
|
ファイナライズ・アクションでS3データ・ファイルをそのままにするには、 |
|
オプション |
子イベント・ハンドラを相互参照する一意の文字列識別子。 |
イベント・ハンドラは構成されない。 |
ファイル・ロール・イベントで呼び出されるイベント・ハンドラを設定します。イベント・ハンドラは、S3へのファイルのロード、ParquetまたはORC形式への変換、HDFSへのファイルのロードなどのファイル・ロール・イベントのアクションを実行できます。 |
|
オプション(Dell ECS以外の場合は必須) |
クラウド・ストレージに接続するための有効なURL。 |
なし |
Amazon AWS S3の場合、不要です。Dell ECSの場合、必須です。クラウド・ストレージに接続するためのURLを設定します。 |
|
オプション |
|
|
セキュリティ・レベルの追加のためにプロキシ・サーバーへのプロキシ・プロトコル接続を設定します。クライアントは最初にプロキシ・サーバーとのSSLハンドシェイクを実行し、次にAmazon AWSとのSSLハンドシェイクを実行します。この機能はバージョン1.11.396のAmazon SDKに追加されたため、このプロパティを使用するには少なくともこのバージョンを使用する必要があります。 |
|
オプション |
|
空 |
S3サーバー側暗号化を有効にする場合にのみ設定します。パラメータを使用して、S3のサーバー側暗号化のアルゴリズムを設定します。 |
|
オプション |
有効なAWSキー管理システムのサーバー側の管理キー、またはそのキーを表す別名。 |
空 |
S3サーバー側暗号化を有効にし、S3アルゴリズムが |
親トピック: S3イベント・ハンドラの使用