Support Questions
Find answers, ask questions, and share your expertise
Announcements
Check out our newest addition to the community, the Cloudera Innovation Accelerator group hub.

UPDATE RECORD processor is adding 'MapRecord[' while retrieving field of type 'Array'

New Contributor

I am trying to do UPSERT on hbase using PUTDATABASERECORD processor.

For this I am preparing UPSERT query using UPDATERECORD processor


109204-1559819427555.png

My UPDATE RECORD processor settings are like this.

In this one I have added one more field called query


value of query is : concat('UPSERT INTO myschema.Parameter("DSN","LEGACYID","INTDATE","PARAMETERDATA")values(\'',/DSN,'\',',/legacyID,',\'',/intDate,'\',\'',/parameterData,'\')')

The last field(parameterData) referred above is of type array.

When the UPDATE RECORD processor runs my query is generated. In the query generated find I can find something called 'MapRecord[' for the parameterData which is mentioned above.

109199-1559820439623.png

Each array item is enclosed in a MapRecord. Is this something done by UpdateRecord processor?

Is there any way to avoid this?

It would be great if someone can guide me to avoid/fix this.


Thanks

Jithesh

2 REPLIES 2

New Contributor

This is an old issue but however, recently I had the same problem using the LookupRecord processor.

In my case it is due to retrieving data from the LookupRecord in which the first records appears to be null. Hence NiFi is unable to create the correct schema for this data (settings 'Inherit schema' in reader). As a result when a record with valid data is processed, NiFi seems to wrap it inside 'MapRecord'.

The solution is to put the valid schema in the AvroSchemeRegistry, and provide it to the reader in your processor.

 

schema.PNG

New Contributor

i was troubleshooting this exact issue yesterday, and the fact that you posted this 4 hours ago on an unanswered question from 2.5 years ago is world class. thanks so much, @BartDPvliz !