NiFi:在放入executescript之前,有没有一种方法可以逐行执行python代码?

时间:2019-06-03 08:39:04

标签: apache-nifi

我打算在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

1 个答案:

答案 0 :(得分:1)

Matt Burgess编写了一个script tester tool,它可以接受Jython脚本并对其进行测试。并不是您要找的交互式环境,而是可能与开箱即用的环境一样紧密。

您使用ExecuteScriptExecuteStreamCommand编写的代码将大不相同;核心逻辑可能是相同的,但是您的代码访问和生成流文件属性和内容的方式将有所不同,因为在NiFi运行时之外运行时,Python不了解特定于NiFi的功能。有关如何为ExecuteStreamCommand编写和如何为ExecuteScript编写this answer的更多详细信息,请参见this answer