Archives of Support Questions (Read Only)

This is an archived board for historical reference. Information and links may no longer be available or relevant
Announcements
This board is archived and read-only for historical reference. To ask a new question, please post a new topic on the appropriate active board.

manipulate flowfile with executescript processor in nifi with python

avatar
Expert Contributor

Hello,

I want to do some stuff on my data while ingesting so i created a little python script to do that .

I am ingesting csv files and want to remove carriage return, linefeed etc in the columns. Also adding new column with timestamp

My script looks lige this

import csv
import sys  
flowFile = session.get()                 
 with open(flowFile, 'rb') as csvfile:
        spamreader = csv.reader(csvfile, delimiter='    ', quotechar='|')
        for row in spamreader:
                for col in row:
                        col.rstrip('\n\r ')


                print ', '.join(row)


14890-executescript1.png

Right now i got this error when running it

2017-04-27 12:40:13,463 ERROR [Timer-Driven Process Thread-8] o.a.nifi.processors.script.ExecuteScript ExecuteScript[id=af58777c-015b-1000-ffff-ffff972978f8] Failed to process session due to org.apache.nifi.processor.exception.ProcessException: javax.script.ScriptException: NameError: name 'flowfile' is not defined in <script> at line number 3: org.apache.nifi.processor.exception.ProcessException: javax.script.ScriptException: NameError: name 'flowfile' is not defined in <script> at line number 3


What should i add to this script in order to output the manipulated flowfiles to the next process. Do i need to rewrite them like

session.write(flowfile).

I am not a python programmer so please be kind and supply small example

Thank you

1 ACCEPTED SOLUTION

avatar
Expert Contributor

I found that the replacetext processor could do this for me with a very little effort. So i did not use executeScript for this.

View solution in original post

4 REPLIES 4

avatar
@Simon Jespersen

Does the script have to be written using Python? There is a three part article written by @Matt Burgess that has some great examples: ExecuteScript Cookbook

avatar
New Member

Hi,

Have you been able to make it work? Could you please share your script here?

Thanks

avatar
Expert Contributor

I found that the replacetext processor could do this for me with a very little effort. So i did not use executeScript for this.

avatar
Master Guru

Looks like it might just have been a typo between "flowFile" and "flowfile"