Hey Paul,

So a FlowFile consists only of Attributes and a Stream of bytes. In order for 
the ValidateRecord
Processor to validate the data, it needs to convert that data from a stream of 
bytes into some
object that it can work with. This is the responsibility of the Record Reader - 
to take a bunch of
bytes and create one or more Record objects. The processor is then responsible 
for sending those
Record objects on to the next processor in the flow. To do that, it has to take 
those Record objects
and convert them back into a stream of bytes. And this is the job of Record 
Writer - to take one or
more Record objects and convert them into a stream of bytes (i.e., serialize 
them).

So if there were no Record Writer, then the processor would not be able to 
convert the
Record objects into streams of bytes.

Does this help to clarify things, or only muddy the water worse? :)

Thanks
-Mark

On Nov 5, 2017, at 3:53 PM, Paul Riddle 
<paul.rid...@onyxpoint.com<mailto:paul.rid...@onyxpoint.com>> wrote:

Hi Mark!

Thanks for the fast response.  That does make sense.  Since I am not making any 
modifications, just validating against a given schema, there is nothing for the 
Record Writer to do.  I am still a little confused as to why it is a required 
Property in the ValidateRecord processor, however.

Thanks,
Paul

On Sun, Nov 5, 2017 at 3:46 PM, Mark Payne 
<marka...@hotmail.com<mailto:marka...@hotmail.com>> wrote:
Hey Paul,

That is accurate - the Record Writer chosen will not affect the validation 
process.
The way that the processor works is to read in records, one at a time, from a 
FlowFile.
Once a record has been read, it is validated against the given schema. It is 
then written
to either the 'valid' relationship or the 'invalid' relationship. When this 
happens, the chosen
Record Writer is used to write it out.

So it would be very common to have a CSV Reader with a CSV Writer or a JSON 
Reader
with a JSON Writer, for instance. However, you could also configure a CSV 
Reader with
a JSON Writer, and it will essentially convert the record for you inline.

This is a very common pattern for the record-oriented processors, because the 
records are
read in, parsed, and turned into a 'Record' object. Once this has happened, we 
can treat that
Record object the same, whether it was parsed from a CSV file, a JSON file, or 
some custom
format. This, of course, provides us with some very powerful, reusable 
processors! Once we've
finished working with that Record object, though, we need to pass it on in some 
way. So we make
use of a Record Writer to serialize it back out.

Does that all make sense?

Thanks
-Mark


On Nov 5, 2017, at 3:24 PM, Paul Riddle 
<paul.rid...@onyxpoint.com<mailto:paul.rid...@onyxpoint.com>> wrote:

Hello All,

In regards to the NiFi 1.4 ValidateRecord processor, it doesn't appear to 
matter what Record Writer I choose.  As long as the Record Reader can read the 
incoming flowfile and the Schema Access Strategy validates my flowfile, it 
comes out the "valid" relationship.

Am I missing some other purpose for the Record Writer property in the 
ValidateRecord Processor?  If so I would like to understand it better.

Regards,
Paul

[https://ipmcdn.avast.com/images/icons/icon-envelope-tick-round-orange-animated-no-repeat-v1.gif]<https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=webmail&utm_term=icon>
    Virus-free. 
www.avast.com<https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=webmail&utm_term=link>



Reply via email to