Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache nifi Apache NiFi RouteText,配置为';到匹配的……和#x27的路线;但标记为无效(“必须是动态属性才能与”匹配)_Apache Nifi_Bigdata - Fatal编程技术网

Apache nifi Apache NiFi RouteText,配置为';到匹配的……和#x27的路线;但标记为无效(“必须是动态属性才能与”匹配)

Apache nifi Apache NiFi RouteText,配置为';到匹配的……和#x27的路线;但标记为无效(“必须是动态属性才能与”匹配),apache-nifi,bigdata,Apache Nifi,Bigdata,我正在尝试使用RouteText处理器(在ApacheNIFI中)提取CSV文件的内容以转换为JSON;我已经将RouteText处理器正确地配置(我相信)为“如果行匹配所有条件,则路由到匹配”,并且我已经将“匹配”关系附加到下游处理器。但处理器不会运行:它被标记为“动态属性无效,因为为了路由文本,必须有与之匹配的动态属性” 从doc()可以看出,我不需要指定动态属性,因为我使用的是内置的“匹配”关系(如:“将与动态属性值中指定的值匹配的数据路由到动态属性键中指定的关系”) 我一定是误解了医生的

我正在尝试使用RouteText处理器(在ApacheNIFI中)提取CSV文件的内容以转换为JSON;我已经将RouteText处理器正确地配置(我相信)为“如果行匹配所有条件,则路由到匹配”,并且我已经将“匹配”关系附加到下游处理器。但处理器不会运行:它被标记为“动态属性无效,因为为了路由文本,必须有与之匹配的动态属性”

从doc()可以看出,我不需要指定动态属性,因为我使用的是内置的“匹配”关系(如:“将与动态属性值中指定的值匹配的数据路由到动态属性键中指定的关系”)


我一定是误解了医生的那部分。有人能纠正我吗?

RouteText处理器总是需要动态属性来指定要匹配的模式

当“如果行匹配所有条件,则路由到匹配”时,它使用这些属性的值来获取模式,如果行匹配所有条件,则路由到匹配

当选择“路由到每个匹配的属性名称”时,它将使用动态属性的值作为要匹配的模式,但这一次,如果一行匹配其中一个值,它将使用动态属性名称作为要路由到的关系的名称


所以,如果您添加一个动态属性,如“foo”=“AAA.*”,并选择“Route to matched if line matches all conditions”,则所有以“AAA”开头的行都将转到matched。如果选择“路由到每个匹配的属性名称”,则以“AAA”开头的所有行都将转到“foo”。无论哪种情况,都需要有一个动态属性来匹配。

好的,谢谢:我误解了用法(特别是重新分组正则表达式)。但我不清楚如何在下一个处理器中使用“foo”(在本例中为AttributesToJSON):在本例中,我尝试解析管道分隔的csv数据,因此(现在)创建了动态属性foo作为正则表达式,以提取所有元素(可以工作,并与预期的所有元素匹配):但在目标处理器中(JSON属性)我将属性列表留空,但我只看到一行,并且它只填充了foo.0和foo.1。在NiFi中,CSV解析似乎很难!目标是为CSV的每一行创建JSON文档吗?最初的问题是关于RouteText,但您在上一条注释中描述的内容听起来更像ExtractText。目标是解析CSV文档并将其另存为JSON。我尝试了ExtractText,但遇到了一些问题,在我(最低限度)的研究中,我收集的ExtractText不建议用于此用例,应该改用RouteText。我确实通过Avro BTW实现了此功能,但我想尝试在没有中间Avro转换的情况下使其工作(但没有编写自己的处理器),作为练习。好的,最有效的方法是使用自定义处理器,在CSV中流式传输并输出新的JSON文档,因此不必生成大量的中间流文件。仅使用现成的处理器,您就可以完成与ConvertCSVToAvro和ConvertAvroToJson相同的操作,或者使用行数为1的SplitText要将每一行放入一个流文件,请提取文本以解析该行,并将值放入属性AttributesToJson,然后合并内容以将所有单独的JSON文档合并到一起。@Tammy您肯定是对的,在许多情况下,您可以构建特定于您的用例的自定义处理器,以简化事情,没有drawback继续使用定制处理器,尽管提供的处理器已经通过了更多的审查和测试,只是因为它们已经被更多的人使用