Apache nifi NiFi:在我们输入executescript之前,有没有办法逐行执行python代码?

Apache nifi NiFi:在我们输入executescript之前,有没有办法逐行执行python代码?,apache-nifi,Apache Nifi,我计划在executescript处理器中编写python代码。因为这是我的第一次,我发现很难开始 基本上,我想读取flowfile(csv)并进行一些操作,然后将其写入flowfile 有没有一种方法可以让我们事先编写代码,比如假设jupyter,然后在处理器中复制相同的代码 另外,是否有用于编写代码的语法文档 EXECUTESTREAMCOMMAND: import org.apache.commons.io.IOUtils import java.io import csv # Get

我计划在executescript处理器中编写python代码。因为这是我的第一次,我发现很难开始

基本上,我想读取flowfile(csv)并进行一些操作,然后将其写入flowfile

有没有一种方法可以让我们事先编写代码,比如假设jupyter,然后在处理器中复制相同的代码

另外,是否有用于编写代码的语法文档

EXECUTESTREAMCOMMAND

import org.apache.commons.io.IOUtils
import java.io
import csv 

# Get flowFile Session
flowFile = session.get()

# Open data.json file and parse json values
readFile = csv.reader(sys.stdin)
for row in readFile:
    new_value = row[0]
if (flowFile != None):
    flowFile = session.putAttribute(flowFile, "from_python_string", "python string example")
    flowFile = session.putAttribute(flowFile, "from_python_number", str(new_value))

session.transfer(flowFile, REL_SUCCESS)
session.commit()

当我执行它时,它在import语句中抛出错误,表示找不到模块

tia

马特·伯吉斯写了一个可以接受Jython脚本并进行测试的程序。不完全是你想要的交互式环境,但可能是现成的


使用
ExecuteScript
ExecuteStreamCommand
时编写的代码将非常不同;核心逻辑可能是相同的,但代码访问和生成流文件属性和内容的方式会有所不同,因为在NiFi运行时之外运行时,Python不知道NiFi特定的特性。有关如何编写
ExecuteStreamCommand
ExecuteScript
的详细信息,请参阅

这篇文章开头不错:我正在使用executestreamcommand,并且在我的问题中更新了这个错误。请帮助我,如果您要使用executestreamcommand,则不需要处理流文件。您将获得流文件内容作为stdin,以及必须写入stdout的转换内容。因此,您可以在不使用nifi的情况下调试python脚本。谢谢@daggett。我的python脚本正在使用stdin和stdout。在executestreamcommand processor中,是否仍然可以通过python脚本获取属性值并更新新属性?谢谢@Andy。我在ExecuteStream命令处理器中的python脚本正在使用stdin和stdout。是否仍有获取属性值和更新新属性的方法?您可以将属性作为参数传入,但目前没有简单的方法使用输出更新现有属性。谢谢@Andy。最后一个问题,我们可以添加新属性吗?您可以使用
UpdateAttribute
处理器或其他类似
EvaluateJSONPath
的处理器来更新流中的属性。
Command Arguments: C:\Users\Desktop\samp1.py
Command Path: C:\Users\AppData\Local\Programs\Python\Python37-32\python