Our Community is getting an upgrade! To get everything ready for the relaunch, we’ll be placing the site in read-only mode starting September 21st.
We really appreciate your understanding while we get things set up behind the scenes. Catch up on all the exciting details about the move here.
Need help or have questions? Drop us a line at [email protected]

Archives of Support Questions (Read Only)

This is an archived board for historical reference. Information and links may no longer be available or relevant
Announcements
This board is archived and read-only for historical reference. To ask a new question, please post a new topic on the appropriate active board.

How to merge 2 flow file content coming from 2 different NiFi flow based on some matching condition ?

avatar
Expert Contributor

Hi,

Can we merge 2 different JSON coming from 2 different flow files using any processor of NiFi. For example :

Input 1 :

{
"Table": "myTable",
"Database": "Database",
"Column": "Column1"
}

Input 2 :

{
"Table": "myTable",
"Database": "Database",
"Column": "Column2"
}

Now the challenge is how we can merge above 2 JSON based on matching condition of Table and Database and merge content of both JSON in a one JSON dictionary.

Output :

{
"Table": "myTable",
"Database": "Database",
"Column": [
"Column2",
"Column1"
]
}

Thank you in advance,

Subash

1 ACCEPTED SOLUTION

avatar
Master Guru

This type of streaming join is not really what Apache NiFi was made to do...

You can do "look up" joins in NiFi where a processor has some kind of reference data set loaded in memory, and a flow file comes in and some value from the flow file is used to look up something in the reference data set and add that back into the data in the flow file, basically enrichment. There are some recent components added to help with this (LookupService and LookupRecord).

True streaming joins would better handled in a stream processing platform like Storm.

View solution in original post

2 REPLIES 2

avatar
Master Guru

This type of streaming join is not really what Apache NiFi was made to do...

You can do "look up" joins in NiFi where a processor has some kind of reference data set loaded in memory, and a flow file comes in and some value from the flow file is used to look up something in the reference data set and add that back into the data in the flow file, basically enrichment. There are some recent components added to help with this (LookupService and LookupRecord).

True streaming joins would better handled in a stream processing platform like Storm.

avatar
Expert Contributor

Thank you @Bryan Bende, I will try Storm.