7 Optimized Row Columnarイベント・ハンドラの使用
Optimized Row Columnar (ORC)イベント・ハンドラは、ORC形式のデータ・ファイルを生成します。
このトピックでは、ORCイベント・ハンドラの使用方法について説明します。
7.1 概要
ORCは、データ取得時間とビッグ・データ分析のパフォーマンスが大幅に向上する行および列形式です。ORCイベント・ハンドラを使用して、ローカル・ファイル・システムまたはHDFSに直接ORCファイルを書き込むことができます。詳細は、https://orc.apache.org/を参照してください。
7.2 機能の詳細
7.2.1 アップストリーム・データ形式について
ORCイベント・ハンドラは、ファイル・ライター・ハンドラによって生成されたAvroオブジェクト・コンテナ・ファイル(OCF)のみを変換できます。ORCイベント・ハンドラは他の形式をORCデータ・ファイルに変換できません。ファイル・ライター・ハンドラの形式は、avro_row_ocf
またはavro_op_ocf
である必要があります。「ファイル・ライター・ハンドラの使用」を参照してください。
親トピック: 機能の詳細
7.2.2 ライブラリの依存性について
ORCファイルを生成するには、Apache ORCライブラリおよびHDFSクライアント・ライブラリの両方が必要です。「Optimized Row Columnarイベント・ハンドラ・クライアント依存性」および「HDFSハンドラ・クライアント依存性」を参照してください。
Oracle GoldenGate for Big Dataには、Apache ORCライブラリもHDFSクライアント・ライブラリも含まれていません。依存性ライブラリを含めるには、gg.classpath
変数を構成する必要があります。
親トピック: 機能の詳細
7.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
親トピック: 機能の詳細
7.2.4 テンプレート文字列の使用
テンプレート文字列には、実行時に動的に解決されるリテラルとキーワードの組合せを含めることができます。ORCイベント・ハンドラは、テンプレート文字列を多用して、ORCディレクトリ名、データ・ファイル名およびORCバケット名を生成します。これにより、データ・ファイルおよびデータ・ファイルの名前を書き込む場所を柔軟に選択できます。
サポートされているテンプレート文字列
キーワード | 説明 |
---|---|
${fullyQualifiedTableName} |
ピリオド( |
${catalogName} |
個々のソース・カタログ名。たとえば、 |
${schemaName} |
個々のソース・スキーマ名。たとえば、 |
${tableName} |
個々のソース表名。たとえば、 |
${groupName} |
Replicatプロセスの名前(調整された適用を使用する場合は、スレッド番号を含む)。 |
${emptyString} |
空の文字列になります。たとえば、 |
${operationCount} |
データ・ファイル内の操作の合計数。名前変更か、イベント・ハンドラで使用する必要があります。それ以外の場合、何もまだ書き込まれていないため、ゼロ( |
${insertCount} |
データ・ファイル内の挿入操作の合計数。名前変更か、イベント・ハンドラで使用する必要があります。それ以外の場合、何もまだ書き込まれていないため、ゼロ( |
${updateCount} |
データ・ファイル内の更新操作の合計数。名前変更か、イベント・ハンドラで使用する必要があります。それ以外の場合、何もまだ書き込まれていないため、ゼロ( |
${deleteCount} |
データ・ファイル内の削除操作の合計数。名前変更か、イベント・ハンドラで使用する必要があります。それ以外の場合、何もまだ書き込まれていないため、ゼロ( |
${truncateCount} |
データ・ファイル内の切捨て操作の合計数。名前変更か、イベント・ハンドラで使用する必要があります。それ以外の場合、何もまだ書き込まれていないため、ゼロ( |
${currentTimestamp} |
現在のタイムスタンプ。日時のデフォルトの出力形式は
この形式は、Javaの |
${toUpperCase[]} |
角カッコ内のコンテンツを大文字に変換します。たとえば、 |
${toLowerCase[]} |
角カッコ内のコンテンツを小文字に変換します。たとえば、 |
テンプレート文字列の構成では、キーワードおよび静的文字列の組合せを使用して、実行時にパスとデータ・ファイル名を構成できます。
親トピック: 機能の詳細