【发布时间】:2021-02-03 14:38:25
【问题描述】:
在本地运行,这完全符合我的要求(在位置 7-10 有一个带有许多不同代码的传入流文件,并且每个唯一代码输出 1 个文件)例如,如果记录 1-5 在位置 7- 有 1234 10,记录 6 在位置 7-10 有 2345,记录 7 在位置 7-10 有 1234,然后会有一个名为 1234_file.txt 的文件,其中第 1-5 行和第 7 行,第二个文件 2345_file.txt 将有输入文件的第 6 行:
f = open("test_comp.txt", "r")
for x in f:
comp = x[6:10]
print(comp)
n = open(comp+"_file.txt","a")
n.write(x)
n.close()
f.close()
在 nifi 中,我正在尝试这个:
from org.apache.commons.io import IOUtils
from java.nio.charset import StandardCharsets
from org.apache.nifi.processor.io import StreamCallback
class PyStreamCallback(StreamCallback):
def __init__(self):
pass
def process(self, inputStream, outputStream):
f = open(inputStream, 'r')
for x in f:
comp = x[6:10]
print("comp: ",comp)
newFile = open(comp+"_file.txt","a")
newFile.write(x)
flowFile = session.get()
if (flowFile != None):
flowFile = session.write(flowFile, PyStreamCallback())
session.transfer(flowFile, REL_SUCCESS)
session.commit()
似乎正在获取输入并将 comp 正确存储为预期的位置 7-10,但我没有得到多个流文件(对于 x[6:10] 中的每个唯一字符串。流文件即将到来out 是 1 个零字节文件。
对我缺少什么有什么想法吗??
【问题讨论】:
标签: python apache-nifi execute-script flowfile