グループ化ルール

重要な注意 : リリース1.6.0から、この機能は、名前マッピングのために推奨されなくなりました。詳細はこちらをご覧ください。

グループ化ルールは、Cygnus の高度なグローバル機能です。すべての NGSI シンクで利用できるため、グローバルです。それらは、通知された FIWARE service path と、エンティティ IDエンティティ・タイプの連結を変更することを可能にします。これは宛先と呼ばれます。

このようなルールは conf/ にある設定ファイル(grouping_rules.conf.template からインスタンス化できる)内の Json だけです。次のコードは例です :

{
    "grouping_rules": [
        {
            "id": 1,
            "fields": [
                ...
            ],
            "regex": "...",
            "destination": "...",
            "fiware_service_path": "..."
        },
        ...
    ]
}

Cygnus に通知が送られると、NGSIGroupingInterceptor と呼ばれる 特殊な Flume インターセプタは、NGSIRestHandlerによって生成されたプレーンな Flume Event をインターセプトし、Event' のボディを解析して新しいヘッダを追加します(これらのヘッダーは、通知内の通知されたコンテキスト要素ごとに1つの要素を持つリストです) : デフォルトの宛先、グループ化されたサービスパス、およびグループ化された宛先。したがって、シンクは、デフォルトのグループ化バージョンの宛先とグループ化の中から選択することができます。終了すると、変更されたイベントはネイティブの FlumeEvent` として再びチャンネルに入れられます。

グループ化ルールの説明フィールド :

  • id : ユニークな符号なし整数ベースの識別子
  • fields : 正規表現マッチングのために連結されるフィールド。連結のために利用可能なフィールドの辞書は、"entityId"、"entityType"、および "servicePath"です。連結が左から右に行われるので、これらのフィールドの順序は重要です
  • regex : 連結されたフィールドに適用される Java ライクな正規表現。'\'のような特殊文字はエスケープする必要があります。'\'は"\"としてエスケープされます
  • destination : データが効果的に持続される HDFS ファイルまたは CKAN リソースの名前。MySQL、Mongo、および STH Comet の場合、これはテーブル/コレクション名を補完します
  • fiware_service_path : 通知された fiware-servicePath を新しいものに置き換えます。シンクは、これを上記の宛先エンティティが配置される HDFS フォルダまたは CKAN パッケージの名前に変換します。MySQL、Mongo、STH Comet の場合、これはテーブル/コレクション名の前に付けられます。/ で始めるか、ルール全体が破棄されます

重要なメモ

NGSIRestHandler での、グループ化規則の定義はのすべてのシンクに対してグローバルであることに注意してください。ただし、アプリケーションは enable_grouping パラメータに応じてシンクにローカルです。したがって、シンクのいずれかがグループ化ルールを利用する場合は、REST ハンドラの中で、グループ化ルールの設定ファイルをブランクのままにしてください。これにより、グループ化アクションで不要なインターセプトを回避できます。

グループ化ルールと名前マッピング

お分かりのように、名前マッピング機能は既に存在するグループ化ルールと非常によく似ています。どちらも Flume インターセプタであり、どちらも通知された特定の名前要素を変更できます。したがって、違いは何ですか?主に :

グループ化ルール 名前マッピング
通知された FIWARE service path と、エンティティIDとエンティティ・タイプの連結を変更することを許可します。これは宛先と呼ばれます 通知された FIWARE service、FIWARE service path、エンティティID、エンティティタイプ、属性名、および属性タイプの変更を許可します
プレーンな Flume Events がインターセプトされ、プレーンな Events がチャネルに入れられます。したがって、グループ化インターセプタがすでにそれを解析したにもかかわらず、シンクは通知を解析する必要があります プレーンな Flume Events はインターセプトされ、NGSIEvents はチャネルに入れられます。インターセプタは元の通知を解析する必要があるため、NGSIEvent にはすでに、解析された元の通知、元の通知のマップされたバージョンが含まれているため、通知を解析するためにシンクが解放されます
このような機能は、現在のグループ化インターセプタコードに基づいて実装することは非常に困難です 将来 enable_content_mappings 機能が実装される予定です。このようなコンテンツ・マッピングは、NGSIEvent 内の元の通知で既にマップされたバージョンを利用します

トップ

参考文献

cygnus-ngsi エージェントの Flume 拡張機能カタログで、このカスタム・インターセプタに関する特定のドキュメントを確認してください。

トップ