Hi James,

Another new nifi user and Python fan here.

Nifi runs in a single jvm instance and it has limited options talking to
other languages like Python. Apache Spark took another road, using py4j,
which I think is a better idea, rather than using jython. But in the end of
the day, jython is what you have.

Like you, I wanted to use Python, but quickly realized NiFi's limitations.
The big deal for me was performance and the fact I cannot use Java
libraries and complied Python packages.

Fortunately, I discovered that groovy was very easy to learn and I was able
to grasp basics needed for my simple scripts in a few hours. There are also
tons of examples how to use groovy with nifi.


On Sun, Apr 15, 2018, 08:35 James McMahon <jsmcmah...@gmail.com> wrote:

> I'm not sure I understand. The ExecuteScript processor forces me into a
> Jython environment - despite selecting Python as the scripting language in
> the processor configuration. I'll never understand why that route was opted
> for in the first place. Why overcomplicate this, introducing yet another
> dependency (on Jython)? Let the selection of python as the script language
> use the installed python on my server, and decouple me from any Jython
> dependencies. It's been nothing but trouble. Python code that works just
> fine from the command line fails for all manner of issues with Jython when
> I call it from ExecuteScript.
> I gather you've called Flask-driven python microservices from NiFi. What
> NiFi processor allows you to do that? I'll look into Flask-driven
> microservices now, and am certainly willing to try this. Thanks very much.
> On Sat, Apr 14, 2018 at 12:25 PM, Mike Thomsen <mikerthom...@gmail.com>
> wrote:
>> From a lot of your posts, it seems like you're running into the same sort
>> of problem that some of my colleagues ran into with Jython. The fact is
>> that Jython is just not well supported by the Python community, and it's
>> going to keep getting worse as Python 2.X EOL deadline in 2020 (IIRC) gets
>> closer. As a Python developer, I think you might find it a lot easier to
>> switch to Python 3 for your code and turn these scripts into Flask-driven
>> microservices that are called by NiFi.
>> Mike
>> On Fri, Apr 13, 2018 at 5:47 PM James McMahon <jsmcmah...@gmail.com>
>> wrote:
>>> No sir. When I run from the command line - I encapsulate script-specific
>>> command sequences in  code triggered by SCRIPT var value, and NiFi
>>> sequences encapsulated within NIFI var values - it runs in a Python
>>> environment. I attempted jython -V at the command line, and it was unable
>>> to find an installation of jython independent of that which comes embedded
>>> in NiFi 0.7.1.c.
>>> Assuming that I am operating in a Jython 2.7.0 environment when in NiFi,
>>> are there specific libraries or packages I should import to get it to
>>> recognize what seem to be very fundamental os package commands? Is it
>>> possible to override the use of the jython packages that I suspect are
>>> missing, and force it to use the python packages that I know are there?
>>> If I must abandon os.statvfs to get this to work in NiFi, have you seen
>>> anyone harvest disk usage information from any native NiFi processors? My
>>> thinking is this: if I can't climb the Jython mountain, maybe I can precede
>>> my ExecuteScript processor with something that does this check in advance.
>>> I would then rip these calls out of my python script (NIFI sections).
>>> Jim
>>> On Fri, Apr 13, 2018 at 2:59 PM, Joe Witt <joe.w...@gmail.com> wrote:
>>>> Independent of NiFi have you successfully used any version of Jython
>>>> to make that call?
>>>> With the NiFi 1.x line that processor has been updated a little bit
>>>> and in particular i think we have Jython 2.7.1 (off memory so could be
>>>> totally nonsense) where as before we had 2.7.0 or something older...
>>>> Thanks
>>>> On Fri, Apr 13, 2018 at 6:37 PM, James McMahon <jsmcmah...@gmail.com>
>>>> wrote:
>>>> > Good afternoon. I am running a python script from an ExecuteScript
>>>> processor
>>>> > in NiFi 0.7.1.c. I'm assuming this is actually running in a Jython
>>>> > environment under the hood of the processor.
>>>> >
>>>> > General question: How can I tell what version of Jython i am
>>>> employing?
>>>> >
>>>> > Specific problem: I employ an os.statvfs call to check available
>>>> capacity on
>>>> > my disk devices that host my content repo, and that host my data
>>>> landing
>>>> > zone. In my command line environment - not jython - Python has this
>>>> library
>>>> > and so I can successfully make this call.
>>>> >
>>>> > In NiFi, I get this error at run time:
>>>> >
>>>> > javax.script.ScriptException: AttributeError: 'module' object has no
>>>> > attribute ;statvfs'
>>>> >
>>>> > How can I correct this? I am happy to replace it if necessary with
>>>> something
>>>> > Jython provides, but don't fully understand the Jython environment
>>>> within
>>>> > NiFi. Is there a suitable Jython equivalent to fix this problem? What
>>>> > package or module must i include in my script to get at that?
>>>> >
>>>> > Thanks in advance for your help.
>>>> >
>>>> > Jim

Reply via email to