You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@oozie.apache.org by yo...@bt.com on 2016/06/22 16:56:02 UTC

Create table with parameterized location

Hello,
I've tried something like the following

set rootpath = 'hdfs_path';
DROP TABLE mytable;
CREATE [EXTERNAL] TABLE mytable (
     Dim1 STRING,
     Dim2 STRING,
     Dim3 STRING )
 LOCATION ${hiveconf:rootpath};

I get this error:


FAILED: ParseException line 1:126 mismatched input '<EOF>' expecting     StringLiteral near 'LOCATION' in table location specification

I am using Hive 1.1.0 with Cloudera 5.4.8.

Does anyone have an idea how to solve this?

All the best,

Yonathan


RE: Create table with parameterized location

Posted by yo...@bt.com.
Strangely that works through HUE, but not via the shell (hive -e). It also doesn't work via my script file, which is what I really want. 

I can take it from here, as I now know it's possible in my version/setup :). Thank you very much for the input.

Yonathan Maalo


-----Original Message-----
From: Per Ullberg [mailto:per.ullberg@klarna.com] 
Sent: 23 June 2016 09:33
To: user@oozie.apache.org
Subject: Re: Create table with parameterized location

This works for me:

      >  SET rootpath=/user/per.ullberg/foo;
hive>
    >  DROP TABLE bar;
OK
Time taken: 0.119 seconds
hive>
    >   CREATE EXTERNAL TABLE bar (
    >      Dim1 STRING,
    >      Dim2 STRING,
    >      Dim3 STRING )
    >  LOCATION '${hiveconf:rootpath}';
OK
Time taken: 0.052 seconds
hive>
    >   SELECT * FROM bar;
OK
foo bar baz NULL NULL
Time taken: 0.058 seconds, Fetched: 1 row(s)
hive>


Guess you're getting the ' in the wrong places.

regards
/Pelle

On Thu, Jun 23, 2016 at 10:17 AM, <yo...@bt.com> wrote:

> Thank you for the response. The variable is set according to 'set;'. 
> I've tried your suggestion prior to posting, I've also tried removing 
> the single quotes in the value and then tried putting 
> ${hiveconf:rootpath} inside quotes i.e. '${hiveconf:rootpath} ' and 
> without quotes. Whenever I put ${hiveconf:rootpath} inside quotes, the error changes to:
>
> FAILED: IllegalArgumentException Can not create a Path from an empty 
> string
>
> Cheers,
>
> Yonathan Maalo
> BT Technology, Service & Operations
> Mob: 07483981150
> Email: yonathan.maalo@bt.com
>
>
> -----Original Message-----
> From: Per Ullberg [mailto:per.ullberg@klarna.com]
> Sent: 22 June 2016 18:49
> To: user@oozie.apache.org
> Subject: Re: Create table with parameterized location
>
> Try to skip the spaces when doing the set.
>
> You can execute 'set;' to verify that rootpath is set as expected.
>
> /Pelle
>
> On Wednesday, June 22, 2016, <yo...@bt.com> wrote:
>
> > Hello,
> > I've tried something like the following
> >
> > set rootpath = 'hdfs_path';
> > DROP TABLE mytable;
> > CREATE [EXTERNAL] TABLE mytable (
> >      Dim1 STRING,
> >      Dim2 STRING,
> >      Dim3 STRING )
> >  LOCATION ${hiveconf:rootpath};
> >
> > I get this error:
> >
> >
> > FAILED: ParseException line 1:126 mismatched input '<EOF>' expecting 
> > StringLiteral near 'LOCATION' in table location specification
> >
> > I am using Hive 1.1.0 with Cloudera 5.4.8.
> >
> > Does anyone have an idea how to solve this?
> >
> > All the best,
> >
> > Yonathan
> >
> >
>
> --
>
> *Per Ullberg*
> Tech Lead
> Odin - Uppsala
>
> Klarna AB
> Sveavägen 46, 111 34 Stockholm
> Tel: +46 8 120 120 00
> Reg no: 556737-0431
> klarna.com
>



-- 

*Per Ullberg*
Tech Lead
Odin - Uppsala

Klarna AB
Sveavägen 46, 111 34 Stockholm
Tel: +46 8 120 120 00
Reg no: 556737-0431
klarna.com

Re: Create table with parameterized location

Posted by Per Ullberg <pe...@klarna.com>.
This works for me:

      >  SET rootpath=/user/per.ullberg/foo;
hive>
    >  DROP TABLE bar;
OK
Time taken: 0.119 seconds
hive>
    >   CREATE EXTERNAL TABLE bar (
    >      Dim1 STRING,
    >      Dim2 STRING,
    >      Dim3 STRING )
    >  LOCATION '${hiveconf:rootpath}';
OK
Time taken: 0.052 seconds
hive>
    >   SELECT * FROM bar;
OK
foo bar baz NULL NULL
Time taken: 0.058 seconds, Fetched: 1 row(s)
hive>


Guess you're getting the ' in the wrong places.

regards
/Pelle

On Thu, Jun 23, 2016 at 10:17 AM, <yo...@bt.com> wrote:

> Thank you for the response. The variable is set according to 'set;'. I've
> tried your suggestion prior to posting, I've also tried removing the single
> quotes in the value and then tried putting ${hiveconf:rootpath} inside
> quotes i.e. '${hiveconf:rootpath} ' and without quotes. Whenever I put
> ${hiveconf:rootpath} inside quotes, the error changes to:
>
> FAILED: IllegalArgumentException Can not create a Path from an empty string
>
> Cheers,
>
> Yonathan Maalo
> BT Technology, Service & Operations
> Mob: 07483981150
> Email: yonathan.maalo@bt.com
>
>
> -----Original Message-----
> From: Per Ullberg [mailto:per.ullberg@klarna.com]
> Sent: 22 June 2016 18:49
> To: user@oozie.apache.org
> Subject: Re: Create table with parameterized location
>
> Try to skip the spaces when doing the set.
>
> You can execute 'set;' to verify that rootpath is set as expected.
>
> /Pelle
>
> On Wednesday, June 22, 2016, <yo...@bt.com> wrote:
>
> > Hello,
> > I've tried something like the following
> >
> > set rootpath = 'hdfs_path';
> > DROP TABLE mytable;
> > CREATE [EXTERNAL] TABLE mytable (
> >      Dim1 STRING,
> >      Dim2 STRING,
> >      Dim3 STRING )
> >  LOCATION ${hiveconf:rootpath};
> >
> > I get this error:
> >
> >
> > FAILED: ParseException line 1:126 mismatched input '<EOF>' expecting
> > StringLiteral near 'LOCATION' in table location specification
> >
> > I am using Hive 1.1.0 with Cloudera 5.4.8.
> >
> > Does anyone have an idea how to solve this?
> >
> > All the best,
> >
> > Yonathan
> >
> >
>
> --
>
> *Per Ullberg*
> Tech Lead
> Odin - Uppsala
>
> Klarna AB
> Sveavägen 46, 111 34 Stockholm
> Tel: +46 8 120 120 00
> Reg no: 556737-0431
> klarna.com
>



-- 

*Per Ullberg*
Tech Lead
Odin - Uppsala

Klarna AB
Sveavägen 46, 111 34 Stockholm
Tel: +46 8 120 120 00
Reg no: 556737-0431
klarna.com

RE: Create table with parameterized location

Posted by yo...@bt.com.
Thank you for the response. The variable is set according to 'set;'. I've tried your suggestion prior to posting, I've also tried removing the single quotes in the value and then tried putting ${hiveconf:rootpath} inside quotes i.e. '${hiveconf:rootpath} ' and without quotes. Whenever I put ${hiveconf:rootpath} inside quotes, the error changes to:
 
FAILED: IllegalArgumentException Can not create a Path from an empty string

Cheers,

Yonathan Maalo
BT Technology, Service & Operations
Mob: 07483981150
Email: yonathan.maalo@bt.com


-----Original Message-----
From: Per Ullberg [mailto:per.ullberg@klarna.com] 
Sent: 22 June 2016 18:49
To: user@oozie.apache.org
Subject: Re: Create table with parameterized location

Try to skip the spaces when doing the set.

You can execute 'set;' to verify that rootpath is set as expected.

/Pelle

On Wednesday, June 22, 2016, <yo...@bt.com> wrote:

> Hello,
> I've tried something like the following
>
> set rootpath = 'hdfs_path';
> DROP TABLE mytable;
> CREATE [EXTERNAL] TABLE mytable (
>      Dim1 STRING,
>      Dim2 STRING,
>      Dim3 STRING )
>  LOCATION ${hiveconf:rootpath};
>
> I get this error:
>
>
> FAILED: ParseException line 1:126 mismatched input '<EOF>' expecting  
> StringLiteral near 'LOCATION' in table location specification
>
> I am using Hive 1.1.0 with Cloudera 5.4.8.
>
> Does anyone have an idea how to solve this?
>
> All the best,
>
> Yonathan
>
>

-- 

*Per Ullberg*
Tech Lead
Odin - Uppsala

Klarna AB
Sveavägen 46, 111 34 Stockholm
Tel: +46 8 120 120 00
Reg no: 556737-0431
klarna.com

Re: Create table with parameterized location

Posted by Per Ullberg <pe...@klarna.com>.
Try to skip the spaces when doing the set.

You can execute 'set;' to verify that rootpath is set as expected.

/Pelle

On Wednesday, June 22, 2016, <yo...@bt.com> wrote:

> Hello,
> I've tried something like the following
>
> set rootpath = 'hdfs_path';
> DROP TABLE mytable;
> CREATE [EXTERNAL] TABLE mytable (
>      Dim1 STRING,
>      Dim2 STRING,
>      Dim3 STRING )
>  LOCATION ${hiveconf:rootpath};
>
> I get this error:
>
>
> FAILED: ParseException line 1:126 mismatched input '<EOF>' expecting
>  StringLiteral near 'LOCATION' in table location specification
>
> I am using Hive 1.1.0 with Cloudera 5.4.8.
>
> Does anyone have an idea how to solve this?
>
> All the best,
>
> Yonathan
>
>

-- 

*Per Ullberg*
Tech Lead
Odin - Uppsala

Klarna AB
Sveavägen 46, 111 34 Stockholm
Tel: +46 8 120 120 00
Reg no: 556737-0431
klarna.com