正在尝试在与本地实例连接的nipyapi中创建PutMongo处理器。我已经指定了所有必需的配置,但似乎不起作用。
PutMongoFile = canvas.create_processor(
root_process_group,
processor_PutMongo,
(randrange(0,4000), randrange(0,4000)),
name=None,
config=processor_PutMongo_config)得到以下错误:
*AttributeError Traceback (most recent call last)
<ipython-input-48-ef1b815cdbdb> in <module>
----> 1 PutMongoFile = canvas.create_processor(root_process_group,processor_PutMongo,(randrange(0,4000),randrange(0,4000)),name=None,config=processor_PutMongo_config)
~\AppData\Roaming\Python\Python38\site-packages\nipyapi\canvas.py in create_processor(parent_pg, processor, location, name, config)
503 """
504 if name is None:
--> 505 processor_name = processor.type.split('.')[-1]
506 else:
507 processor_name = name
AttributeError: 'list' object has no attribute 'type'*感谢大家的帮助!
发布于 2020-11-12 00:28:18
我们在回购here上的一次问题讨论中解决了这个问题。默认情况下,get_processor_type方法是贪婪的,如果找到多个处理器类型,它将返回一个列表,在本例中将同时查找PutMongo和PutMongoRecord。我已经更新了该方法,只允许精确匹配,并在下一个版本中实现了更好的检查
发布于 2021-06-29 18:57:54
processor_PutMongo = canvas.get_processor_type('org.apache.nifi.processors.mongodb.PutMongo', identifier_type='name')这将返回一个字典列表,其中包含PutMongo和PutMongoRecord两个处理器的详细信息。
这就是打印processor_PutMongo时得到的JSON
[
{
"bundle":{
"artifact":"nifi-mongodb-nar",
"group":"org.apache.nifi",
"version":"1.13.2"
},
"controller_service_apis":"None",
"deprecation_reason":"None",
"description":"Creates FlowFiles from documents in MongoDB loaded by a user-specified query.",
"explicit_restrictions":"None",
"restricted":false,
"tags":[
"read",
"get",
"mongodb"
],
"type":"org.apache.nifi.processors.mongodb.GetMongo",
"usage_restriction":"None"
},
{
"bundle":{
"artifact":"nifi-mongodb-nar",
"group":"org.apache.nifi",
"version":"1.13.2"
},
"controller_service_apis":"None",
"deprecation_reason":"None",
"description": "A record-based version of GetMongo that uses the Record writers to write the MongoDB result set.",
"explicit_restrictions":"None",
"restricted":false,
"tags":[
"mongo",
"get",
"fetch",
"record",
"json",
"mongodb"
],
"type":"org.apache.nifi.processors.mongodb.GetMongoRecord",
"usage_restriction":"None"
}
]最短的解决方案是通过索引来提取列表的第一个或第二个元素,即。
例如
PutMongo = canvas.create_processor(new_processor_group, processor_PutMongo[0],(randrange(0,20000),randrange(0,20000)),name=None,config=processor_PutMongo_config)https://stackoverflow.com/questions/64747125
复制相似问题