【问题标题】:Use ExecuteScript with Python to write JSON to file使用 ExecuteScript 和 Python 将 JSON 写入文件
【发布时间】:2021-09-22 14:36:50
【问题描述】:

我正在尝试访问 GitHub API 并将内容写入 FlowFile。我可以在 Python 脚本中创建 FlowFile,也可以使用 GenerateFlowFile 并将其发送到脚本中,我并不挑剔。到目前为止,我创建 JSON 的代码如下(使用 urllib 来遵守 Jython):

import urllib.request
import json

headers = {
    'Content-Type': 'application/json {}'.format('cat'),
    'Authorization': 'token TOKEN_TEXT'
}

page = 1
response_text = []

while page > 0:
    req = urllib.request.Request(url="GITHUB_API_URL".format(page),\
                                 data=None, headers=headers)
    
    with urllib.request.urlopen(req) as resp:
        data = json.loads(resp.read().decode("utf-8"))

    
        if len(data) == 0:
            break
        else:
            response_text.extend(data)
            page += 1

我已经确认我获得了所需的 JSON,我真的只需要将 response_text 写入 FlowFile 以传递到我的流中的下一个处理器。我已经尝试过研究,但似乎在 ExecuteScript 处理器上找不到任何硬文档(如果您知道我在哪里可以找到,我也将不胜感激)。

【问题讨论】:

  • 这是python 2吗?
  • 不,python 3。我读过 ExecuteScript 仅适用于纯 python 库,所以我尝试将其保留为 json 和 urllib
  • 考虑 ExecuteStreamCommand 过程,以便您可以使用标准 Python 代替 Jython。您可以传递命令行选项并设置 ENV 变量。设置 PYTHONPATH 以查找模块。此命令替换流文件。

标签: python apache-nifi


【解决方案1】:

我写了一系列名为 ExecuteScript Cookbook(part 1part 2part 3)的文章,其中包含(以及其他受支持的语言)常见 NiFi API 调用的 Jython 示例。看一下处理 FlowFile I/O 的第 2 部分。我应该提一下,NiFi 中使用的 Jython 脚本引擎是基于 Python 2 而不是 3。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-22
    • 1970-01-01
    • 1970-01-01
    • 2013-04-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多