nifi + executescript使用python计算文件中的行

hav*_*age 1 python apache-nifi

嗨,我需要获取csv文件中的行数,而第一行是标头,我需要将行数存储在属性中,并解析流文件,使其未触及下一个处理器

我当时在考虑使用extracttext,但是我不认为正则表达式可以做到这一点。

因此,下一步将是executeScript处理器。我想到了带有以下模板的python脚本

flowFile = session.get() 
if (flowFile != None):
# All processing code starts at this indent
attrMap = ['numberOflines': '1', 'myAttr2': Integer.toString(2)]
flowFile = session.get()
if(!flowFile) return
#Do something to get numbers of lines in the flow file
i =0;
    for line in flowfile
        i+=1

flowFile = session.putAttribute(flowFile, 'attribute_numberOfLines', i)
if errorOccurred:
    session.transfer(flowFile, REL_FAILURE)
else:
    session.transfer(flowFile, REL_SUCCESS)
Run Code Online (Sandbox Code Playgroud)

最后的隐式收益

这将无法运行

mat*_*tyb 5

尝试将“行拆分计数”设置为比文件中可能的最大行数(例如一百万)高一些的SplitText处理器。如果希望总行数减去标题,也可以将“标题行数”设置为1。您将获得相同的流文件,但具有将包含行数的属性text.line.count。