I'm 100% sure that the suggested should work:
I have this in my workflow and it works perfect:
<decision name="check-preconditions-directories"> <switch>
<!-- Check if the warehouse dir for all the data exists. If not, create it with
the right permissions. --> <case
to="create-warehouse-dirs">${!fs:exists(wf:conf('hiveMainTableLocation')) ||
!fs:exists(wf:conf('hive_temp_tables_root'))}</case> <!-- default:
just proceed. --> <default to="preconditions-join"/>
</switch> </decision>
in my bundle.xml (I'm using a bundle):
<property> <name>hiveMainTableLocation</name>
<value>${hive_tables_root}/OrderItems</value> </property>
In my job.properties:
hive_temp_tables_root=${nameNode}/user/hive/warehouse/pzt/tmp/hive
This works 100%.
Oozie 4.1.0-cdh5.4.2
Cheers,
Oussama Chougna
> Date: Mon, 29 Jun 2015 10:15:15 +0200
> Subject: Re: HDFS EL Function - fs:dirSize(String path)
> From: [email protected]
> To: [email protected]
>
> I think that is not possible because oozie can replace variable once, not
> twice (fsDir + your variable) I think you have to create your own Oozie
> function, or maybe use an shell action to do some stuf (fs dir of your
> folder in parameter) and then use an capture-output to get the size of your
> folder :)
>
> --
> Laurent HATIER - Consultant Big Data & Business Intelligence chez CapGemini
> fr.linkedin.com/pub/laurent-hatier/25/36b/a86/
> <http://fr.linkedin.com/pub/laurent-h/25/36b/a86/>
>
> 2015-06-25 22:33 GMT+02:00 Vincent Peplinski <[email protected]>:
>
> > Neither of those suggestions resolved the issue...
> >
> > On Thu, Jun 25, 2015 at 3:02 PM, Idris Ali <[email protected]> wrote:
> >
> > > Hi,
> > >
> > > Can you try changing the single quotes only around pDate to double quotes
> > > "". Seems to be xml wrapping issue.
> > >
> > > Thanks,
> > > Idris
> > >
> > > On Thursday 25 June 2015, Vincent Peplinski <[email protected]>
> > > wrote:
> > >
> > > > Thanks for the suggestion Oussama, unfortunately it did not resolve my
> > > > issue :(
> > > >
> > > > <param>byt_wrt=${fs:dirSize('/user/peppy/testing/p_dt=coord:
> > > > conf('pDate')')}</param>
> > > >
> > > > Resulted in the following:
> > > >
> > > > Error Code : EL_ERROR
> > > > Error Message : Encountered "pDate", expected one of [".", ">",
> > "gt",
> > > > "<", "lt", "==", "eq", "<=", "le", ">=", "ge", "!=", "ne", ")", ",",
> > "[",
> > > > "+", "-", "*", "/", "div", "%", "mod", "and", "&&", "or", "||", "?"]
> > > >
> > > > On Thu, Jun 25, 2015 at 3:13 AM, Oussama Chougna <
> > > [email protected]
> > > > <javascript:;>>
> > > > wrote:
> > > >
> > > > > You should try this:
> > > > > If you are using a coordinator:
> > > > >
> > > > >
> > > >
> > >
> > <param>byt_wrt=${fs:dirSize('/user/peppy/testing/p_dt=coord:conf('pDate')')}</param>
> > > > > If you only using a workflow:
> > > > >
> > > > >
> > > >
> > >
> > <param>byt_wrt=${fs:dirSize('/user/peppy/testing/p_dt=wf:conf('pDate')')}</param>
> > > > >
> > > > > Nested EL does not work.
> > > > >
> > > > >
> > > > > Good luck,
> > > > > Cheers.
> > > > > Oussama Chougna
> > > > >
> > > > >
> > > > >
> > > > > > Date: Wed, 24 Jun 2015 20:49:32 +0000
> > > > > > From: [email protected]
> > > > > > To: [email protected] <javascript:;>
> > > > > > Subject: Re: HDFS EL Function - fs:dirSize(String path)
> > > > > >
> > > > > >
> > > <param>byt_wrt=${fs:dirSize('/user/peppy/testing/p_dt=pDate')}</param>
> > > > .
> > > > > pDate without ${}.
> > > > > > From: Vincent Peplinski <[email protected]
> > <javascript:;>>
> > > > > > To: [email protected] <javascript:;>
> > > > > > Sent: Wednesday, June 24, 2015 12:41 PM
> > > > > > Subject: HDFS EL Function - fs:dirSize(String path)
> > > > > >
> > > > > > Hello,
> > > > > >
> > > > > > I'm trying to use the fs:dirSize() HDFS EL function in one of my
> > > > > workflows
> > > > > > action nodes but I'm having some difficulty and I hope someone can
> > > > help.
> > > > > >
> > > > > > When I call the function using a literal string such as:
> > > > > >
> > > > > >
> > > >
> > <param>byt_wrt=${fs:dirSize('/user/peppy/testing/p_dt=20150624')}</param>
> > > > > >
> > > > > >
> > > > > > The function returns the size of the file as expected. However;
> > when
> > > I
> > > > > try
> > > > > > the following:
> > > > > >
> > > > > >
> > > >
> > <param>byt_wrt=${fs:dirSize('/user/peppy/testing/p_dt=${pDate}')}</param>
> > > > > >
> > > > > > The workflow fails with an EL_ERROR - Illegal character in path
> > index
> > > > 26
> > > > > > /user/peppy/testing/p_dt=${pDate}.
> > > > > >
> > > > > >
> > > > > > How can I pass a variable to the function that will be properly
> > > > expanded?
> > > > > >
> > > > > > Thank you in advance.
> > > > > >
> > > > > > V.
> > > > > >
> > > > > >
> > > > > >
> > > > >
> > > > >
> > > >
> > >
> >