Over a million developers have joined DZone.

Building a Custom Processor in Apache NiFi for TensorFlow Using the Java API

DZone's Guide to

Building a Custom Processor in Apache NiFi for TensorFlow Using the Java API

Learn how I used TensorFlow's new Java API with Apache NiFi, which uses a custom processor to perform image recognition.

· AI Zone ·
Free Resource

Did you know that 50- 80% of your enterprise business processes can be automated with AssistEdge?  Identify processes, deploy bots and scale effortlessly with AssistEdge.

TensorFlow has released a Java API, so I decided to write a quick custom processor to run TensorFlow Inception v3.

It's a simple set of dependencies for Maven:

It's easy to add the new processor NiFi. First, build it using mvn install (see my build script), then deploy it:

cp nifi-tensorflow-nar/target/nifi-tensorflow-nar-1.0.nar /Volumes/Transcend/Apps/nifi-1.2.0/lib

Once you restart NiFi, you can add the TensorFlow Processor.

An example flow is to the use the very smart ListFile , which will iterate through a list of files and keep track of the timestamp of files it last accessed. I point to a directory of files and the NiFi processor gets fed a ton of images to very quickly process. This is much faster than my calling out to a script.

I gave it a picture of my RV...

And this is what it guessed. The result of the run is a new attribute, probabilities, which is a string description of what it could be a confidence percentage as text:

Here's the source code.


Consuming AI in byte sized applications is the best way to transform digitally. #BuiltOnAI, EdgeVerve’s business application, provides you with everything you need to plug & play AI into your enterprise.  Learn more.

nifi ,tensorflow ,hadoop ,java api ,ai ,image recognition ,tutorial

Published at DZone with permission of

Opinions expressed by DZone contributors are their own.

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}