This is the below Hive Table
CREATE EXTERNAL TABLE IF NOT EXISTS SampleTable
(
USER_ID BIGINT,
NEW_ITEM ARRAY
If you are on Hive 0.10 or later, you could also use inline(ARRAY<STRUCT[,STRUCT]>)
. It explodes an array of structs into a table.
You need to explode only once (in conjunction with LATERAL VIEW). After exploding you can use a new column (called prod_and_ts in my example) which will be of struct type. Then, you can resolve the product_id and timestamps members of this new struct column to retrieve the desired result.
SELECT
user_id,
prod_and_ts.product_id as product_id,
prod_and_ts.timestamps as timestamps
FROM
SampleTable
LATERAL VIEW explode(new_item) exploded_table as prod_and_ts;