Apache nifi 如何生成flowfile属性的哈希(其中一些)
我有一个Apache nifi 如何生成flowfile属性的哈希(其中一些),apache-nifi,Apache Nifi,我有一个flowfile,有3个属性a、b、c。我想创建两个新属性a_b_hash,c_hash a_b_hash = hash of (value of a + '_' + value of b) c_hash = hash of c 因此,最后我需要5个属性a,b,c,a\u b\u hash,c\u hash。a、b、c保持不变 我尝试了不同的组合,但无法生成哈希。有些排列是有效的,但我不知道它是否生成了正确的has 更新 我创建了以下模板并运行了它。我希望a\u hash和c\u h
flowfile
,有3个属性a、b、c。我想创建两个新属性a_b_hash
,c_hash
a_b_hash = hash of (value of a + '_' + value of b)
c_hash = hash of c
因此,最后我需要5个属性a
,b
,c
,a\u b\u hash
,c\u hash
。a、b、c保持不变
我尝试了不同的组合,但无法生成哈希。有些排列是有效的,但我不知道它是否生成了正确的has
更新 我创建了以下模板并运行了它。我希望
a\u hash
和c\u hash
具有相同的值,a
和c
具有相同的值
ae48862f-0165-1000-cc45-c1efcbb7ff08dnu-hash-attribute91ef00b9-6cd0-3fed-0000-000000000000 5842A0B1-f01b-3160-0000-00000001 GB100005842a0b1-f01b-3160-0000-000000000000000000 5CF06895-44e9-3f64-0000-0000000处理器0SEC1成功5842A0B1-f01b-3160-0000-000000000000 9B4DD5B8-8718-3f54-0000-000000000000处理器02FBFD09E-72e8-3c46-0000-000000000000000000 5842A0B1-f01b-3160-0000-0000000000001 GB100005842a0b1-f01b-3160-0000-000000000000 AB89E6D1-f08e-32be-0000-000000000000000000处理器0sec1success5842a0b1-f01b-3160-0000-0000000000005cf06895-44e9-3f64-0000-000000000000处理器04E1F1096-d302-35f8-0000-0000000000000000005842A0B1-f01b-3160-0000-0000000000001 GB100005842a0b1-f01b-3160-0000-000000000009B4DD5B8-8718-3f54-0000-000000000000000000处理器0sec1success5842a0b1-f01b-3160-0000-000000000000509810d8-4798-30e5-0000-000000000000处理器09b4dd5b8-8718-3f54-0000-000000000000 5842a0b1-f01b-3160-0000-000000 89.149688895009349271.1685572155761NiFi附带一个名为HashAttribute
的处理器。其用法类似于,您可以添加动态属性,其中新属性的名称将是流文件的名称,并且值是正则表达式,您可以提供(?s)(^.*$)
来捕获流文件属性的整体值
流量
HashAttribute-a和b
HashAttribute-c
结果流文件属性
您可能希望使用ApacheNIFI 1.8.0-SNAPSHOT(1.8.0尚未发布)中提供的CryptographicHashAttribute
。我希望在1.8.0中描述的新功能发布后,我会弃用HashAttribute
,并提供它(我有一个分支即将完成,但最近一直在处理一些其他优先事项)
现在,该行为不允许任意字符串连接,因此必须使用UpdateAttribute
处理器用表达式语言表达式${a}{u${b}
填充属性a_b以执行连接,然后HashAttribute
a_b_hash->a_b
,将属性匹配策略设置为Individual
。c_hash->c
可以在没有任何额外处理器的情况下完成 请看我的更新。要么我做错了什么,要么我无法解释为什么相同的字符串值会生成两个不同的散列。这是因为它将键和值散列在一起。因此,即使您有相同的值,键(即FlowFile属性名称)也是不同的,这就是为什么您会得到不同的值。看看这个街区: