The shell will interpret the query in your command as SELECT
...  explode(split(timestamps, *#*)) ... if you run it the way you wrote
it, i.e. without the quotation. The way around this is to either escape the
quotation marks or use single quotes:

hive -e *"*SELECT user_id
,product_id
,prod_and_ts_split
 FROM (
SELECT *
FROM (
SELECT user_id
 ,prod_and_ts.product_id AS product_id
,prod_and_ts.timestamps AS timestamps
FROM testingtable2 LATERAL VIEW explode(purchased_item) exploded_table AS
prod_and_ts where user_id is NOT NULL
 ) prod_and_ts
) tt2 LATERAL VIEW explode(split(timestamps, *\**"#\"*)) exploded_table2 AS
prod_and_ts_split
 WHERE to_date(from_unixtime(cast(prod_and_ts_split AS BIGINT))) =
'2012-07-12'
GROUP BY user_id
,product_id
 ,prod_and_ts_split
ORDER BY user_id
,prod_and_ts_split DESC"

or

... explode(split(timestamps, *'**#'*)) ...


Best regards,
Jan

On Wed, Aug 8, 2012 at 4:46 AM, Techy Teck <comptechge...@gmail.com> wrote:

> This is my below HiveQL query that I am running from the shell prompt. The
> only confusion that I am having with this is, If you see double quotes
> before first SELECT in red color, it gets closed on the red color *#. *So
> should I escape the *# *character or it will be running fine like this
> also?
>
>
>
> hive -e *"*SELECT user_id
> ,product_id
> ,prod_and_ts_split
>  FROM (
> SELECT *
> FROM (
>  SELECT user_id
> ,prod_and_ts.product_id AS product_id
> ,prod_and_ts.timestamps AS timestamps
>  FROM testingtable2 LATERAL VIEW explode(purchased_item) exploded_table
> AS prod_and_ts where user_id is NOT NULL
> ) prod_and_ts
>  ) tt2 LATERAL VIEW explode(split(timestamps, *"#"*)) exploded_table2 AS
> prod_and_ts_split
> WHERE to_date(from_unixtime(cast(prod_and_ts_split AS BIGINT))) =
> '2012-07-12'
>  GROUP BY user_id
> ,product_id
> ,prod_and_ts_split
>  ORDER BY user_id
> ,prod_and_ts_split DESC"
>

Reply via email to