Generics ApacheNIFI-使用通用流处理100种不同的颠簸转换的策略

Generics ApacheNIFI-使用通用流处理100种不同的颠簸转换的策略,generics,apache-nifi,flow,jolt,Generics,Apache Nifi,Flow,Jolt,我是Nifi的新手,有三个词要说。“我喜欢它”。为了前进,我需要做出一个严肃的决定,努力解决一个难题。我需要设计的流程是从1000个不同主题的Kafka消息中读取信息(每个主题都是客户,需要将它们分开),每个主题都有100种不同类型的命令类型或事件类型 每个事件类型都有JSON数据,这些数据具有需要转换的不同字段和值。我担心的是,最好的处理方法是什么 如何路由和处理100个不同的命令/事件以及1000个不同的主题?不仅如此,我还在寻找通用流,这样我就可以将命令类型和Jolt规范存储在某个地方(在

我是Nifi的新手,有三个词要说。“我喜欢它”。为了前进,我需要做出一个严肃的决定,努力解决一个难题。我需要设计的流程是从1000个不同主题的Kafka消息中读取信息(每个主题都是客户,需要将它们分开),每个主题都有100种不同类型的命令类型或事件类型

每个事件类型都有JSON数据,这些数据具有需要转换的不同字段和值。我担心的是,最好的处理方法是什么


如何路由和处理100个不同的命令/事件以及1000个不同的主题?不仅如此,我还在寻找通用流,这样我就可以将命令类型和Jolt规范存储在某个地方(在DB中)并进行查找,但我希望避免每次执行转换时都会出现DB跳闸。

因此每个主题都有100种不同的类型-这100种类型在每个主题中是否一致?所以每个主题都有相同的100种类型?是的,这100种类型在每个主题中都是一致的。主题名称作为一个属性保留,您可以提供一个正则表达式模式。因此,您可以有一个消费卡夫卡记录,它消费了所有1000个客户主题。您可以使用PartitionRecord按“类型”将记录存储到流文件中,并将“类型”保留在属性中。您可以使用LookupAttribute从某处获取JOLT规范,并将其作为FF上的属性保留(可能不理想)。然后JoltTransformRecord可以使用属性中的规范应用转换。此时,您有按客户划分的FFs,并根据需要键入can路线。@Sdairs-非常感谢。这是我为POC所做的。我已经将JOLT规范存储在DB中,并将键作为命令类型。我使用distributedCacheMap(按命令类型)作为键,使用Jolt spec作为值来缓存它们。现在,阅读Kafka,然后使用EvaluateJsonPath提取客户和命令类型,并将它们放入FF属性中。现在,从缓存中获取JOLT规范,然后使用JoltTransformRecord进行转换。你认为这是一个很好的规模设计吗?我应该改为将记录分区到Bucket而不是EvaluateJsonPath吗?使用EvaluateJsonPath意味着您每个流文件有一条记录,当您有很多记录时,这将无法扩展。使用PartitionRecord,您可以保留更大的流文件,这将扩展更多。