Thanks Vinod. I tried concatenating variables. But that is also not possible as I see. set pqr = concat(foo,bar); set file_name= home/user/Desktop
Then the file_name I am getting is *NOT* home/user/Desktop/foo_bar But what I am getting is, /home/user/Desktop/concat(foo,bar) On Mon, Jul 23, 2012 at 3:04 PM, Vinod Singh <vi...@vinodsingh.com> wrote: > We generate variables dynamically and then create a final script file by > concatenating variables (SET commands) and Hive queries. Then final script > is executed. Probably you can adopt something similar approach. > > Thanks, > Vinod > > 2012/7/23 Manisha Gayathri <mani...@wso2.com> > >> Thanks again Vinod. >> >> Will try to find a way to pass the directory URLs from outside then. >> And it would be grateful if you can direct me to any guide or >> documentation that describes how to pass values from outside of Hive. >> >> Thanks >> Manisha >> >> >> On Mon, Jul 23, 2012 at 2:08 PM, Vinod Singh <vi...@vinodsingh.com>wrote: >> >>> SET commands are handled differently and UDFs can't be invoked there. >>> IMO you need to pass the directory location value from outside of Hive. >>> That is how we do. >>> >>> Thanks, >>> Vinod >>> >>> 2012/7/23 Manisha Gayathri <mani...@wso2.com> >>> >>>> Hi Vinod, >>>> >>>> Thanks for the prompt reply. >>>> Understood your point and sorry for not providing the complete code >>>> segment earlier. >>>> >>>> I have the getFilePath function which should return a URL like this. >>>> >>>> home/user/Desktop/logDir/logs/log_0_testServer_2012_07_22 >>>> >>>> The defined function works perfectly if I put *getFilePath( >>>> "0","testServer" ) *into the *select* statement. >>>> >>>> But I want to get that particular URL as the *local directory name*. >>>> (The requirement is such that this should not be hard-coded in the hive >>>> query. Rather should be generated in the custom UDF. ) >>>> >>>> So can I do something like I v shown below? >>>> >>>> *set file_name= getFilePath( "0","testServer" ); *//Define a >>>> parameter.* * >>>> *.................* >>>> *..............* >>>> *INSERT OVERWRITE LOCAL DIRECTORY 'file:///${hiveconf:file_name}' >>>> *//Assign the above parameter as the file URL >>>> >>>> I tried this way. But the directory name is returned as >>>> >>>> file:/getFilePath( "0" , "testServer" ) >>>> >>>> Does that mean I cannot use UDF to define the local directory name? Or >>>> am I doing anything wrong in here? >>>> >>>> Thanks >>>> Manisha >>>> >>>> On Mon, Jul 23, 2012 at 1:47 PM, Vinod Singh <vi...@vinodsingh.com>wrote: >>>> >>>>> The output path in this query is already parameterized- >>>>> >>>>> *INSERT OVERWRITE LOCAL DIRECTORY 'file:///${hiveconf:file_name}'* >>>>> >>>>> Though UDF is not going to be invoked here. >>>>> >>>>> Thanks, >>>>> Vinod >>>>> >>>>> >>>>> 2012/7/23 Manisha Gayathri <mani...@wso2.com> >>>>> >>>>>> Hi >>>>>> >>>>>> Is there any possibility of defining the output directory of a hive >>>>>> query using a Hive UDF? >>>>>> >>>>>> In my UDF, I am passing 2 parameters (as follows) and this generates >>>>>> a file-system URL >>>>>> *getFilePath( "0","testServer" );* >>>>>> >>>>>> Can I use the above getFilePath( "0","testServer" ) value, as the >>>>>> Local Directory location as follows? >>>>>> *INSERT OVERWRITE LOCAL DIRECTORY 'file:///${hiveconf:file_name}'* >>>>>> >>>>>> If above is not the correct way, could you please show me how to do >>>>>> it? >>>>>> Your help is much appreciated! >>>>>> >>>>>> Thanks >>>>>> >>>>>> ~Regards >>>>>> *Manisha Eleperuma* >>>>>> Software Engineer >>>>>> >>>>>> * >>>>>> * >>>>>> >>>>>> >>>>> >>>> >>>> >>>> -- >>>> ~Regards >>>> *Manisha Eleperuma* >>>> Software Engineer >>>> >>>> >>>> >>> >> >> >> -- >> ~Regards >> *Manisha Eleperuma* >> Software Engineer >> >> * >> * >> >> > -- ~Regards *Manisha Eleperuma* Software Engineer WSO2, Inc.: http://wso2.com lean.enterprise.middleware *mobile: +94 71 8279777* * *