首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用nipyapi的PutMongo处理器

使用nipyapi的PutMongo处理器
EN

Stack Overflow用户
提问于 2020-11-09 15:06:17
回答 2查看 69关注 0票数 1

正在尝试在与本地实例连接的nipyapi中创建PutMongo处理器。我已经指定了所有必需的配置,但似乎不起作用。

代码语言:javascript
复制
PutMongoFile = canvas.create_processor(
    root_process_group,
    processor_PutMongo, 
    (randrange(0,4000), randrange(0,4000)), 
    name=None,
    config=processor_PutMongo_config)

得到以下错误:

代码语言:javascript
复制
*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'*

感谢大家的帮助!

EN

回答 2

Stack Overflow用户

发布于 2020-11-12 00:28:18

我们在回购here上的一次问题讨论中解决了这个问题。默认情况下,get_processor_type方法是贪婪的,如果找到多个处理器类型,它将返回一个列表,在本例中将同时查找PutMongo和PutMongoRecord。我已经更新了该方法,只允许精确匹配,并在下一个版本中实现了更好的检查

票数 1
EN

Stack Overflow用户

发布于 2021-06-29 18:57:54

代码语言:javascript
复制
processor_PutMongo = canvas.get_processor_type('org.apache.nifi.processors.mongodb.PutMongo', identifier_type='name')

这将返回一个字典列表,其中包含PutMongoPutMongoRecord两个处理器的详细信息。

这就是打印processor_PutMongo时得到的JSON

代码语言:javascript
复制
[
   {
      "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"
   }
]

最短的解决方案是通过索引来提取列表的第一个或第二个元素,即

例如

代码语言:javascript
复制
PutMongo = canvas.create_processor(new_processor_group, processor_PutMongo[0],(randrange(0,20000),randrange(0,20000)),name=None,config=processor_PutMongo_config)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64747125

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档