【发布时间】:2012-07-07 13:57:57
【问题描述】:
这是下面的 Hive 表
CREATE EXTERNAL TABLE IF NOT EXISTS SampleTable
(
USER_ID BIGINT,
NEW_ITEM ARRAY<STRUCT<PRODUCT_ID: BIGINT,TIMESTAMPS:STRING>>
)
这就是上表中的数据-
1015826235 [{"product_id":220003038067,"timestamps":"1340321132000"},{"product_id":300003861266,"timestamps":"1340271857000"}]
有什么方法可以在爆炸数组后从 HiveQL 获得以下输出?
**USER_ID** | **PRODUCT_ID** | **TIMESTAMPS**
------------+------------------+----------------
1015826235 220003038067 1340321132000
1015826235 300003861266 1340271857000
更新
我编写了这个查询来获得上述格式的输出,但它并没有以我想要的方式给我结果。
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;
谁能帮助我我做错了什么?任何建议将不胜感激。
【问题讨论】:
-
这样的事情怎么样?选择 user_id,prod_and_ts.product_id 作为 product_id,prod_and_ts.timestamps 作为时间戳从 SampleTable LATERAL VIEW explode(new_item) exploded_table as prod_and_ts;
-
@Mark,谢谢 Mark,它成功了,你能把这个作为答案发布,以便我接受。您能否也看看这个 SO 问题。 http://stackoverflow.com/questions/11336950/joining-two-tables-in-hive-using-hiveqlhadoop。因为还没有人回答这个问题。对我会有很大的帮助。感谢您的宝贵时间。
-
很高兴它有帮助。贴出答案。很快就会看看另一个问题!
-
嘿,webby,我只是想知道你问的一个很好的问题,但我被困在第一步,只是我无法在 hive 中创建一个结构数组。如果你能帮我创建一个结构数组,那真的会很有帮助
标签: hadoop mapreduce hive hiveql