Support Questions
Find answers, ask questions, and share your expertise
Announcements
Alert: Welcome to the Unified Cloudera Community. Former HCC members be sure to read and learn how to activate your account here.

NiFi GetHTTP processor's uuid attribute

Solved Go to solution

NiFi GetHTTP processor's uuid attribute

I'm using nifi-1.1.0.0-10 and trying to save the output of a URL to a unique filename using GetHTTP processor. There is a 'Filename' property that supports expression language, but ${uuid} does not seem to work like other variables.

./downloads/${uuid} evaluates to ./downloads/

while

./downloads/${UUID()} evaluates to ./downloads/40b08a2c-de4f-4504-ac86-1743b59a3810/

is ${uuid} a special attribute that cannot be used in 'FIlename' inside of GetHTTP processor?

1 ACCEPTED SOLUTION

Accepted Solutions

Re: NiFi GetHTTP processor's uuid attribute

Andrew is correct in regards to the difference between ${uuid} and ${UUID()} but the reason why ${uuid} doesn't work is because the GetHTTP processor doesn't evaluate the expression language in relation to the new flowfile.

As you can see on this line: https://github.com/apache/nifi/blob/528dab78d6dbc3bb4f61663f423b07284936ec40/nifi-nar-bundles/nifi-s...

It calls "evaluateAttributeExpressions()" with no parameters so the "uuid" of the new flowfile is outside the scope of the expression language when being evaluated. If you want to re-use the UUID for the FlowFile you can use an UpdateAttribute processor to append the UUID to "./downloads/".

2 REPLIES 2

Re: NiFi GetHTTP processor's uuid attribute

Vlad, I think there's a misunderstanding here. See if I understood the problem below.

In the GetHTTP the Filename is something you assign. You can use an expression, but that also means that you must invoke the UUID() function to generate the id. It doesn't exist yet.

The ${uuid} syntax reads an existing UUID. It will work down the line in your data flow, but it will not generate any id for you.

In your case, it is correct to use the UUID() function.

Re: NiFi GetHTTP processor's uuid attribute

Andrew is correct in regards to the difference between ${uuid} and ${UUID()} but the reason why ${uuid} doesn't work is because the GetHTTP processor doesn't evaluate the expression language in relation to the new flowfile.

As you can see on this line: https://github.com/apache/nifi/blob/528dab78d6dbc3bb4f61663f423b07284936ec40/nifi-nar-bundles/nifi-s...

It calls "evaluateAttributeExpressions()" with no parameters so the "uuid" of the new flowfile is outside the scope of the expression language when being evaluated. If you want to re-use the UUID for the FlowFile you can use an UpdateAttribute processor to append the UUID to "./downloads/".

Don't have an account?
Coming from Hortonworks? Activate your account here