我打算在executescript处理器中编写python代码。由于这是我的第一次,所以我很难上手。
基本上,我想读取流文件(csv)并进行一些操作,然后将其写入流文件中。
有没有一种方法可以预先编写代码,例如假设jupyter,然后将其复制到处理器中?
还有,用于编写代码的语法文档吗?
EXECUTESTREAMCOMMAND :
scalar Upload
...
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()
当我执行它时,它在导入语句上引发错误,提示未找到任何模块。
tia
答案 0 :(得分:1)
Matt Burgess编写了一个script tester tool,它可以接受Jython脚本并对其进行测试。并不是您要找的交互式环境,而是可能与开箱即用的环境一样紧密。
您使用ExecuteScript
和ExecuteStreamCommand
编写的代码将大不相同;核心逻辑可能是相同的,但是您的代码访问和生成流文件属性和内容的方式将有所不同,因为在NiFi运行时之外运行时,Python不了解特定于NiFi的功能。有关如何为ExecuteStreamCommand
编写和如何为ExecuteScript
编写this answer的更多详细信息,请参见this answer。