You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@nifi.apache.org by "Ganesh (Jira)" <ji...@apache.org> on 2021/09/20 09:32:00 UTC

[jira] [Commented] (NIFI-8026) PutMongoRecord cannot handle deeply nested JSON documents.

    [ 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)