[
https://issues.apache.org/jira/browse/NIFI-8026?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17417542#comment-17417542
]
Ganesh commented on NIFI-8026:
------------------------------
Facing same issue while migrating from RDBMS to MongoDB. Do we have solution or
work around for this issue until we get a fix? Any tentative timeline for the
fix?
> 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
> Priority: Major
> 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)