爆炸结构的蜂巢
数组这是下面的蜂巢表爆炸结构的蜂巢
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;
任何人都可以帮助我,我在做什么错?任何建议将不胜感激。
您只需要爆炸一次(连同横向视图)。在爆炸之后,你可以使用一个新的列(在我的例子中称为prod_and_ts),它将是结构类型的。然后,您可以解析此新结构列的product_id和timestamps成员以检索所需的结果。
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;
的数组,那么它真的会有所帮助,我还发布了另外一个问题,因为它是与性能测量相关的更多类型的理论问题[http://stackoverflow.com/questions/11404163 /custom-mapper-and-reducer-vs-hiveql](http://stackoverflow.com/questions/11404163/custom-mapper-and-reducer-vs-hiveql)。我很抱歉,如果我像这样打扰你,那么在这里没有那么多BIG DATA专家。所以这就是我给你打电话的原因。真的很感谢您的帮助... – ferhan 2012-07-10 07:45:18
嗨马克,感谢您的帮助。我已经发布了与Hive中的Struct爆炸数组相关的类似问题,但是这次的数据与somehwat不同。你能否看看如果可以做到这一点? [http://stackoverflow.com/questions/11550651/exploding-array-of-struct-using-hiveql](http://stackoverflow.com/questions/11550651/exploding-array-of-struct-using-hiveql) – ferhan 2012-07-18 21:30:42
嗨马克,我们如何能够爆炸并为多个阵列创建视图>列。你可以请求我的请求帮助http://stackoverflow.com/questions/37282646/how-to-create-view-for-struct-fields-in-hive – 2016-05-25 06:40:57
如果您在Hive 0.10或更高版本上,也可以使用inline(ARRAY<STRUCT[,STRUCT]>)
。它将一个结构数组分解成一个表。
这是一个有用的答案,但它没有完全回答这个问题。这样,顶级字段,即'USER_ID'不在结果中。 – jkukul 2017-03-13 16:46:03
这样的事情呢? 选择 USER_ID, prod_and_ts.product_id如PRODUCT_ID, prod_and_ts.timestamps从 SampleTable侧视图爆炸(NEW_ITEM)exploded_table作为prod_and_ts时间戳 ; – 2012-07-08 15:27:30
@马克,感谢马克,它的工作,你可以张贴这个答案,以便我可以接受它。你还可以看看这个问题吗? [http://stackoverflow.com/questions/11336950/joining-two-tables-in-hive-using-hiveqlhadoop](http://stackoverflow.com/questions/11336950/joining-two-tables-in-hive-使用-hiveqlhadoop)。由于没有人回答这个问题。这对我很有帮助。谢谢你的时间。 – ferhan 2012-07-08 18:46:18
很高兴帮助。发表答案。很快就会看到另一个问题! – 2012-07-09 12:56:28