6 HDFSイベント・ハンドラの使用
HDFSイベント・ハンドラを使用して、ファイル・ライター・ハンドラによって生成されたファイルをHDFSにロードします。
このトピックでは、HDFSイベント・ハンドラの使用方法について説明します。「ファイル・ライター・ハンドラの使用」を参照してください。
6.1 機能の詳細
6.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
親トピック: 機能の詳細
6.1.2 HDFSイベント・ハンドラの構成
プロパティ・ファイルを使用して、HDFSハンドラの操作を構成します。これらのプロパティは、Javaアダプタ・プロパティ・ファイルにあります(Replicatプロパティ・ファイルにはありません)。
HDFSイベント・ハンドラの選択を有効にするには、まずgg.eventhandler.name.type=hdfs
およびその他のHDFSイベント・プロパティを次のように指定してハンドラ・タイプを構成する必要があります。
表6-1 HDFSイベント・ハンドラの構成プロパティ
プロパティ | 必須/オプション | 有効な値 | デフォルト | 説明 |
---|---|---|---|---|
|
必須 |
|
なし |
使用するHDFSイベント・ハンドラを選択します。 |
|
必須 |
データ・ファイルを書き込むHDFSのパスを動的に生成するために使用される、解決可能なキーワードと定数を含む文字列。 |
なし |
定数とともにインタレースされるキーワードを使用して、一意のパス名を実行時に動的に生成します。パス名は、通常、 |
|
オプション |
実行時にHDFSファイル名を動的に生成するために使用される、解決可能なキーワードと定数を含む文字列。 |
なし |
定数とともにインタレースされるキーワードを使用して、一意のファイル名を実行時に動的に生成します。設定しない場合、アップストリームのファイル名が使用されます。 |
|
オプション |
|
|
ファイナライズ・アクションでのファイル・ライター・ハンドラの動作を示します。
|
|
オプション |
Kerberosプリンシパル名。 |
なし |
HDFS Kerberos認証が有効になっている場合は、Kerberosプリンシパルに設定します。 |
|
オプション |
Kerberos |
なし |
HDFS Kerberos認証が有効になっている場合は、Kerberos |
|
オプション |
子イベント・ハンドラを相互参照する一意の文字列識別子。 |
イベント・ハンドラは構成されない。 |
イベント・ハンドラを相互参照する一意の文字列識別子。イベント・ハンドラは、ファイル・ロール・イベントで呼び出されます。イベント・ハンドラは、S3へのファイルのロード、ParquetまたはORC形式への変換、HDFSへのファイルのロードなどのファイル・ロール・イベントのアクションを実行できます。 |
親トピック: 機能の詳細
6.1.3 テンプレート文字列の使用
テンプレート文字列には、実行時に動的に解決されるリテラルとキーワードの組合せを含めることができます。HDFSイベント・ハンドラは、テンプレート文字列を多用して、HDFSディレクトリ名、データ・ファイル名およびHDFSバケット名を生成します。これにより、データ・ファイルおよびデータ・ファイルの名前を書き込む場所を柔軟に選択できます。
サポートされているテンプレート文字列
キーワード | 説明 |
---|---|
${fullyQualifiedTableName} |
ピリオド( |
${catalogName} |
個々のソース・カタログ名。たとえば、 |
${schemaName} |
個々のソース・スキーマ名。たとえば、 |
${tableName} |
個々のソース表名。たとえば、 |
${groupName} |
Replicatプロセスの名前(調整された適用を使用する場合は、スレッド番号を含む)。 |
${emptyString} |
空の文字列になります。たとえば、 |
${operationCount} |
データ・ファイル内の操作の合計数。名前変更か、イベント・ハンドラで使用する必要があります。それ以外の場合、何もまだ書き込まれていないため、ゼロ( |
${insertCount} |
データ・ファイル内の挿入操作の合計数。名前変更か、イベント・ハンドラで使用する必要があります。それ以外の場合、何もまだ書き込まれていないため、ゼロ( |
${updateCount} |
データ・ファイル内の更新操作の合計数。名前変更か、イベント・ハンドラで使用する必要があります。それ以外の場合、何もまだ書き込まれていないため、ゼロ( |
${deleteCount} |
データ・ファイル内の削除操作の合計数。名前変更か、イベント・ハンドラで使用する必要があります。それ以外の場合、何もまだ書き込まれていないため、ゼロ( |
${truncateCount} |
データ・ファイル内の切捨て操作の合計数。名前変更か、イベント・ハンドラで使用する必要があります。それ以外の場合、何もまだ書き込まれていないため、ゼロ( |
${currentTimestamp} |
現在のタイムスタンプ。日時のデフォルトの出力形式は
この形式は、Javaの |
${toUpperCase[]} |
角カッコ内のコンテンツを大文字に変換します。たとえば、 |
${toLowerCase[]} |
角カッコ内のコンテンツを小文字に変換します。たとえば、 |
テンプレート文字列の構成では、キーワードおよび静的文字列の組合せを使用して、実行時にパスとデータ・ファイル名を構成できます。
親トピック: 機能の詳細