Rostislav Nedelchev created NIFI-8026:
-----------------------------------------

             Summary: PutMongoRecord cannot handle deeply nested JSON documents.
                 Key: NIFI-8026
                 URL: https://issues.apache.org/jira/browse/NIFI-8026
             Project: Apache NiFi
          Issue Type: Bug
          Components: Core Framework
    Affects Versions: 1.12.1
            Reporter: Rostislav Nedelchev
         Attachments: nested_json.json

I am running Apache Nifi 1.12.1 to import data from S3 to MongoDB.

Unfortunately, the PutMongoRecord with JsonTreeReader cannot handle nested 
JSONs.  I have used the GenerateFlowFile Processor to isolate one such example 
( [^nested_json.json] ) .


{code:java}
// org.apache.nifi.serialization.record.util.IllegalTypeConversionException: 
Cannot convert value 
[MapRecord[{geoKoordinate=MapRecord[{breitengrad=MapRecord[{rawValue=53.523275}],
 laengengrad=MapRecord[{rawValue=9.914175}]}], 
gueltigkeit=MapRecord[{von=2018-12-03T00:00Z}], 
planungsknoten=MapRecord[{geoKoordinate=MapRecord[{breitengrad=MapRecord[{rawValue=53.523275}],
 laengengrad=MapRecord[{rawValue=9.914175}]}], 
ortsangabeReferenz=MapRecord[{objektSchluessel=MapRecord[{sequence=1, 
alpha=HAMBURG-WALTERSH DRA}], 
techKey=MapRecord[{rawValue=800000000008925481}]}], 
gueltigkeit=MapRecord[{von=2018-06-27T00:00Z}], 
objektSchluessel=MapRecord[{sequence=1, alpha=HAMBURG-WALTERSHOF}], 
techKey=MapRecord[{rawValue=800000000007210910}], 
produktionsCode=MapRecord[{bahnverwaltungsnummer=80, 
netzbahnstellennummer=010819}], bsReferenzen=[Ljava.lang.Object;@bdd9995, 
name=MapRecord[{rawValue=Hamburg-Waltershof}], 
rlCode=MapRecord[{rawValue=AWHOD}], 
version=MapRecord[{gespeicherteInterneVersion=-1, externeVersion=1530090460, 
interneVersion=0, gespeicherteExterneVersion=-1}]}], 
mitbedienteGwps=[Ljava.lang.Object;@1b29f43b, 
objektSchluessel=MapRecord[{sequence=2, alpha=AWHO CTB ohne Zoll}], 
techKey=MapRecord[{rawValue=800000000007703732}], 
produktionsCode=MapRecord[{bahnverwaltungsnummer=80, gwpNummer=1010, 
netzbahnstellennummer=010819}], name=MapRecord[{rawValue=AWHO CTB Container}], 
rlCode=MapRecord[{rawValue=AWHOD}], 
version=MapRecord[{gespeicherteInterneVersion=-1, externeVersion=1543829665, 
interneVersion=0, gespeicherteExterneVersion=-1}]}]] of type CHOICE[RECORD, 
RECORD] to Map for field meldungsOrt because the type is not supported
        at 
org.apache.nifi.serialization.record.util.DataTypeUtils.convertRecordFieldtoObject(DataTypeUtils.java:821)
        at 
org.apache.nifi.serialization.record.util.DataTypeUtils.convertRecordArrayToJavaArray(DataTypeUtils.java:860)
        at 
org.apache.nifi.serialization.record.util.DataTypeUtils.convertRecordFieldtoObject(DataTypeUtils.java:819)
        at 
org.apache.nifi.serialization.record.util.DataTypeUtils.convertRecordFieldtoObject(DataTypeUtils.java:814)
        at 
org.apache.nifi.processors.mongodb.PutMongoRecord.onTrigger(PutMongoRecord.java:133)
        at 
org.apache.nifi.processor.AbstractProcessor.onTrigger(AbstractProcessor.java:27)
        at 
org.apache.nifi.controller.StandardProcessorNode.onTrigger(StandardProcessorNode.java:1174)
        at 
org.apache.nifi.controller.tasks.ConnectableTask.invoke(ConnectableTask.java:213)
        at 
org.apache.nifi.controller.scheduling.TimerDrivenSchedulingAgent$1.run(TimerDrivenSchedulingAgent.java:117)
        at org.apache.nifi.engine.FlowEngine$2.run(FlowEngine.java:110)
        at 
java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
        at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308)
        at 
java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180)
        at 
java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294)
        at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
        at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
        at java.lang.Thread.run(Thread.java:748)
{code}



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to