Questa è la tabella sottostante Hiveesplodere l'Array di Struct in Hive
CREATE EXTERNAL TABLE IF NOT EXISTS SampleTable
(
USER_ID BIGINT,
NEW_ITEM ARRAY<STRUCT<PRODUCT_ID: BIGINT,TIMESTAMPS:STRING>>
)
E questo è i dati del tavolo- sopra
1015826235 [{"product_id":220003038067,"timestamps":"1340321132000"},{"product_id":300003861266,"timestamps":"1340271857000"}]
C'è un modo posso ottenere l'uscita in basso da HiveQL dopo aver esploso l'array?
**USER_ID** | **PRODUCT_ID** | **TIMESTAMPS**
------------+------------------+----------------
1015826235 220003038067 1340321132000
1015826235 300003861266 1340271857000
Aggiornato
ho scritto questa query per ottenere l'output nel formato di cui sopra, ma non mi sta dando il risultato nel modo che volevo.
SELECT myTable1.myCol1,myTable2.myCol2 FROM sampletable st LATERAL VIEW
explode(st.purchased_item.product_id) myTable1 AS myCol1 LATERAL VIEW
explode(st.purchased_item.timestamps) myTable2 AS myCol2;
Qualcuno può aiutarmi che cosa sto sbagliando? Ogni suggerimento sarà apprezzato.
Che ne dici di qualcosa del genere? selezionare user_id, prod_and_ts.product_id come product_id, prod_and_ts.timestamps come timestamp da sampletable LATERALE VISTA esplodere (NEW_ITEM) exploded_table come prod_and_ts; –
@ Mark, grazie Mark, ha funzionato, puoi pubblicare questo come risposta in modo che io possa accettarlo. E puoi anche dare un'occhiata anche a questa domanda SO. [http://stackoverflow.com/questions/11336950/joining-two-tables-in-hive-using-hiveqlhadoop](http://stackoverflow.com/questions/11336950/joining-two-tables-in-hive- utilizzando-hiveqlhadoop). Come nessuno ha ancora risposto a questa domanda. Sarà di grande aiuto per me. Grazie per il tuo tempo. – ferhan
Felice di averlo aiutato. Ha pubblicato la risposta. Daremo presto un'occhiata all'altra domanda! –