Member since
07-30-2019
3470
Posts
1642
Kudos Received
1018
Solutions
My Accepted Solutions
| Title | Views | Posted |
|---|---|---|
| 301 | 05-06-2026 09:16 AM | |
| 530 | 05-04-2026 05:20 AM | |
| 368 | 05-01-2026 10:15 AM | |
| 532 | 03-23-2026 05:44 AM | |
| 394 | 02-18-2026 09:59 AM |
05-06-2021
02:10 PM
2 Kudos
@sangee Details around your use case may be helpful. The SplitText processor will output all FlowFiles produced at the exact same time to the "splits" relationship. So if you intent is to wait until all splits from a single source FlowFile are produced before processing those splits, this flow is not needed. Pierre has written an excellent blog around using wait and notify processors in a dataflow that does merge and split. Check it out here: https://pierrevillard.com/2018/06/27/nifi-workflow-monitoring-wait-notify-pattern-with-split-and-merge/ If you found this helpful with your query, please take a moment to login and click accept on this solution. Thanks, Matt
... View more
05-06-2021
02:01 PM
@syntax_ NiFi does not provide a method for uploading templates in bulk. But anything you can do via the UI, you can also do via rest-api calls [1] through curl. So you could script the bulk upload through rest-api external to NiFi's UI. I would strongly discourage bulk uploading templates to NiFi. Templates should be uploaded as needed, instantiate to the canvas and then template deleted from NiFi. All uploaded templates even if not instantiated to the canvas become part of the flow.xml loaded in to heap memory. So keeping a large number of templates uploaded to your NiFi can have a considerable impact on JVM heap memory usage because now you have not only your active flow on the canvas in memory, but also these templates. Additionally, In a NiFi cluster on startup the flow.xml.gz is uncompressed, loaded in to heap memory, and a flow fingerprint created on every node. These flow fingerprints are then compared to make sure all nodes joining the cluster are running with the same flow.xml. Since these templates can just add unnecessary size to the flow.xml.gz, this can impact startup times and flow fingerprint comparison time. A better approach is to get your reusable flow migrated into NiFi-Registry [2]. You can have 1 to many NiFi's all connect to a single NiFi-Registry where all your flows exist. Then all you need to do is drag a process group to the canvas and select "import" which will allow you to select one of these flows from NiFi-Registry and add it to your canvas. Now you have your flow without the additional impact on heap from having it in NiFi both as a template and as a dataflow on your canvas with easy access to load same flow over and over. I encourage you to explore NiFi-Registry. [1] http://nifi.apache.org/docs/nifi-docs/rest-api/index.html [2] https://nifi.apache.org/registry.html If you found this response helped with your query, please take a moment to login in and click accept on this solution. Thanks, Matt
... View more
05-06-2021
01:37 PM
1 Kudo
@robnew The "CompressContent" [1] processor can be used to decompress gz files. My suggestion here since only some log files are compressed is to set up a flow that passes these FlowFiles through an "IdentifyMimeType" [2] processor. This will write out a new mime.type attribute on the FlowFiles. Then use a "RouteOnAttribute" [3] processor to route FlowFiles with mime.type = application/gzip (each new dynamic property becomes a new outbound relationship) to that "CompressContent" processor and the "unmatched" relationship (which will have every other non gz file) on through your flow without passing through "CompressContent" processor. [1] http://nifi.apache.org/docs/nifi-docs/components/org.apache.nifi/nifi-standard-nar/1.13.2/org.apache.nifi.processors.standard.CompressContent/index.html [2] http://nifi.apache.org/docs/nifi-docs/components/org.apache.nifi/nifi-standard-nar/1.13.2/org.apache.nifi.processors.standard.IdentifyMimeType/index.html [3] http://nifi.apache.org/docs/nifi-docs/components/org.apache.nifi/nifi-standard-nar/1.13.2/org.apache.nifi.processors.standard.RouteOnAttribute/index.html If you found this helpful with your question, please take a moment to login and click accept on this solution. Thanks, Matt
... View more
05-06-2021
01:21 PM
@Dmitry Trying to fully understand your use case here... You have 1 to many FlowFile where you want to merge the content of each of those FlowFiles in to a single FlowFile if all those FlowFile have an attribute "manager_name" with the same value? If so, the MergeContent [1] or MergeRecord [2] processors could do that for you. You would set the "Correlation Attribute Name" property in those processors the place incoming FlowFiles in to bins based on unique values set for "manager_name" on each incoming FlowFile. Those bins are then merged based on criteria set in other properties on the processor. The merged output FlowFile will have several new attribute written to it. One of those new attributes is "merge.count" which will contain the count of the number fo input FlowFiles that were merged. You could use an UpdateAttribute processor to read the value from "merge.count" and "manager_name", then assign those to other attribute named "total" and "general key" is those attribute names are specifically needed. [1] http://nifi.apache.org/docs/nifi-docs/components/org.apache.nifi/nifi-standard-nar/1.13.2/org.apache.nifi.processors.standard.MergeContent/index.html [2] http://nifi.apache.org/docs/nifi-docs/components/org.apache.nifi/nifi-standard-nar/1.13.2/org.apache.nifi.processors.standard.MergeRecord/index.html If you found this information helped with you question, please take a moment to login and click accept on this solution. Matt
... View more
05-06-2021
11:23 AM
@Justee Sharing the configuration of both your listSFTP and FetchSFTP processor, as well as a listing of the target SFTP directory would be helpful to those who could assist you here. The listSFTP processor should be configured with only the base path where all the files you want to list exist in the "Remote Path" property. If the files you want to list reside within sub-directories of that base directory, make sure you also se "Search Recursively" to true. The ListSFTP processor will output a NiFi FlowFile for each file that is listed. Also those produced FlowFiles will have FlowFile attributes set on them with: So you might want to list those FlowFiles in the NiFi connection queue an inspect what values were set on these properties. Are they correct? These attributes can then be used in the FetchSFTP processor to facilitate the fetching of the content for each FlowFile listed. Hope this helps, Matt
... View more
05-06-2021
11:11 AM
@leandrolinof The shared bulletin is being produced by the EvaluateJsonPath processor. It may be helpful if you share your current ReplaceText processor configuration, sample input file (prior to ReplaceText), desired output file (post ReplaceText), and the configuration of your EvaluateJsonPath processor. Use case details are also very helpful to understand what your end-to-end goal is here. Thanks, Matt
... View more
05-06-2021
10:56 AM
@hkh Did you happen to restart your NiFi instance at any time? Can you share a versbose (ls -latrh) listing of your log directory? I do recommend you compress on rollover. nifi-app.logs can get very large especially if you are only creating one log file per day. To compress on rollover, you would add a ".gz" to the end of your <fileNamePattern>${org.apache.nifi.bootstrap.config.log.dir}/nifi-app_%d.log.gz</fileNamePattern> Thanks, Matt
... View more
05-05-2021
06:21 AM
@Justee So with NiFi, there is a UI, but you need to make sure there is a route to the host (where you are laughing your browser) and target: <hostname/IP>:<port> If your NiFi in startup is binding to private network interface or only the loopback IP address, you would most likely be unable to reach those IPs from your client machine on a public network. From your client machine, can you ping that "<hostname/IP>"? Does the server where your NiFi is running have multiple network interfaces for perhaps a public and a private network? Did you try changing the IP that NiFi binds to in nifi.properties file: nifi.web.http.host= Did you try to tell your NiFi to bind to multiple network interfaces in the nifi.properties file if they exist in that server? For example: nifi.web.http.network.interface.eth0=eth0
nifi.web.http.network.interface.eth1=eth1 Your servers network interfaces may be different then above example. If you found this solution helpful, please take a moment to login in and click accept on all solutions that helped you. Thanks, Matt
... View more
05-03-2021
08:41 AM
@pherschmann The "nifi is running but not responding to ping requests" is not referring to ability to ping the host. When NiFi is started, you are starting the NiFi bootstrap process. This bootstrap process then starts a child NiFi process which is what runs the main NiFi that you interact with. When you run the status command, it us asking the bootstrap process to return the status of that child process. It is telling you that it sees that the PID for that child process still exists so reports it is running, but when it tries to get a response from that child process it fails and logs that the status ping got no response. This almost always is the result of some resource contention within NiFi. The NiFi process may have been going through Java Garbage Collection (GC) at the time you ran the status command. (all GC is stop-the-world event, so JVM will not respond to anything else), or thread usage (CPU consumption) was high at the time, etc... If you see this allot or are seeing node disconnection or UI stability issues, you may want to start monitoring resources on the host, or maybe enable GC logging in your NiFi to see if the service is spending a lot of time doing GC. Increasing heap allocated to NiFi or making dataflow design changes to reduce the heap memory footprint of your current dataflow(s) design would help there. Hope you found this information helpful. If so, please take a moment to login and click accept on this solution, Matt
... View more
05-03-2021
07:48 AM
@Justee MiNiFi has not web interface like NiFi has. MiNiFi is meant to be lightweight and simply execute dataflows you build in NiFi. When you run "tail -F nifi-app.log" immediately after startup (./nifi.sh start) of the NiFi, you will see the NiFi process starting up. The NiFi web interface will not be accessible until you see these log lines output to that nifi-app.log file: 2021-05-03 13:23:17,031 INFO [main] org.apache.nifi.web.server.JettyServer NiFi has started. The UI is available at the following URLs:
2021-05-03 13:23:17,031 INFO [main] org.apache.nifi.web.server.JettyServer https://<hostname/IP>:<port>/nifi Until you see these lines you will not be able to load the interface. You should also verify that the URL you are trying to use maps to one from the list and you are using the correct port. Looking at your attachments, I see it looks like your NiFi bound to your loopback address 127.0.0.1 which would only be reachable via a browser running on that same host and to 10.0.2.15. You would need to make sure that the host where you have your browser is able to reach this IP (can you ping it?). Hope this helps, Matt
... View more