ユーザー定義関数を実装します
Data Archiving ライブラリには、実装するデータのインデックス作成用の API がいくつか用意されています。
-
SimpleUDF.getKeys(metadata, message)
または MultiKeysUDF.getMultipleKeys(metadata, message)
または SplittedUDF.getSplittedKeys(metadata, message)
aggregate(keys, messages)
この API を実装するか、またはデフォルトの実装を再利用できます。
transformForDeadLetter(message)
この API を使用して、ユーザー定義のメトリクスの登録を含む機能を設定できます。
open(parameters, runtimeContext)
このトピックでは、これらのメソッドについて説明します。 詳細については、以下を参照してください。 Javadoc
各属性に単一の値がある場合に、メッセージごとにこのメソッドを使用して Data Archiving ライブラリにインデックス属性を提供します。 インデックス属性もメッセージから抽出できます。
metadata
引数には、次の情報が含まれます。 - データが HERE platform にインジェストされた時刻 ()
INGESTION_TIME
- データ・アーカイブライブラリによってデータが処理された時刻 ()
PROCESSING_TIME
- 出力カタログおよびインデックス レイヤー ID (
SINK_CATALOG
, SINK_LAYER
) - 入力カタログおよびストリーム レイヤー ID (
SOURCE_CATALOG
, SOURCE_LAYER
) - 入力データのメッセージ ID ()
MESSAGE_ID
- 属性名は
indexDefinitions
インデックス レイヤーのと一致する必要があります。 timewindow
タイプは必須 timewindow
です。このメソッドから返されるのは 1 つだけです。 - 型のインデックス定義
heretile
が存在する場合、タイル of ズーム レベル値はインデックス レイヤーで定義されているズーム レベルと一致する必要があります。 - この実装されたメソッドにエラーまたは例外がある場合、そのメッセージはアーカイブされません。
各属性に複数の値がある場合、このメソッドを使用して、データアーカイブライブラリにインデックス属性を提供します。 インデックス属性もメッセージから抽出できます。
- で
MultiKeysUDF
は、各属性の値のリストを返す必要があります。 各属性の値のリストを返さない場合は、検証の例外が発生します。 - すべての入力パラメーターの内容が
SimpleUDF.getKeys
メソッドと同じです。 - 各属性の値リストの各値のすべての検証規則は
SimpleUDF.getKey
、メソッドと同じです。 - この実装されたメソッドにエラーまたは例外がある場合、そのメッセージはアーカイブされません。
-
各属性の値のすべてのリストが結合されます。 HERE の例を次に示します。
Example 1:
Input
attribute1: {value1_1, value1_2}, attribute2: {value2_1, value2_2}
Output
{value1_1, value2_1}, {value1_1, value2_2}, {value1_2, value2_1}, {value1_2, value2_2}
Example 2:
Input
attribute1: {value1}, attribute2: {value2_1, value2_2}, attribute3: {value3}
Output
{value1, value2_1, value3}, {value1, value2_2, value3}
複数の属性にマッピングされている値が同じで、メッセージを複数のメッセージに分割する場合に、このメソッドを使用して Data Archiving ライブラリにインデックス属性を提供します。 インデックス属性もメッセージから抽出できます。
- で
SplittedUDF
は、インデックスの異なる小さいメッセージにメッセージを分割できます。 - 小さいサイズの各メッセージのインデックス属性は、
Map<Map<String, Object>, byte[]>
対応する小さいサイズのメッセージ値 AS で返されるのキーになり byte[]
ます。 各属性は、として表さ Map<String, Object>
れます。 - すべての入力パラメーターの内容が
SimpleUDF.getKeys
メソッドと同じです。 - の各値のすべての検証ルール
Map<String, Object>
は SimpleUDF.getKey
、メソッドと同じです。 - この実装されたメソッドにエラーまたは例外がある場合、そのメッセージはアーカイブされません。
集約 ( キー、メッセージ )
このメソッドは、メッセージのグループごとに ( 集計ウィンドウのインデックス属性に基づいて ) 、 Function パラメータで指定 keys
された属性 ( キー ) にグループを関連付けます。
エラーストラテジ 'eadletter' の場合、ユーザーは、メッセージを変換してからデッドロックレイヤーにアーカイブする関数を定義できます。 詳細については、「デッドレター方式」を参照してください。
open ( パラメータ , runtimeContext)
実際の作業メソッド ( など getKeys/aggregate
) の前に呼び出される初期化メソッドで、 1 回限りのセットアップ作業に適しています。 デフォルトでは、このメソッドは no-op です。