这是下面的Hive表
CREATE EXTERNAL TABLE IF NOT EXISTS SampleTable
(
USER_ID BIGINT,
NEW_ITEM ARRAY<STRUCT<PRODUCT_ID: BIGINT,TIMESTAMPS:STRING>>
)
Run Code Online (Sandbox Code Playgroud)
这是上表中的数据 -
1015826235 [{"product_id":220003038067,"timestamps":"1340321132000"},{"product_id":300003861266,"timestamps":"1340271857000"}]
Run Code Online (Sandbox Code Playgroud)
有什么办法可以在爆炸阵列后从HiveQL获得以下输出吗?
**USER_ID** | **PRODUCT_ID** | **TIMESTAMPS**
------------+------------------+----------------
1015826235 220003038067 1340321132000
1015826235 300003861266 1340271857000
Run Code Online (Sandbox Code Playgroud)
更新
我写了这个查询以获得上述格式的输出,但它并没有按照我想要的方式给出结果.
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;
Run Code Online (Sandbox Code Playgroud)
任何人都可以帮我解决我的错误吗?任何建议将不胜感激.
我有一个Hive查询,它选择了大约30列和大约400,000条记录并将它们插入另一个表中.我在SQL子句中有一个连接,它只是一个内连接.
由于超出了Java GC开销限制,查询失败.
奇怪的是,如果我删除join子句并只选择表中的数据(稍高的音量),那么查询工作正常.
我对Hive很新.我无法理解为什么这个连接导致内存异常.
关于如何编写Hive查询以便它们不会导致这些问题,我是否应该注意一些事项?任何人都可以解释为什么连接可能会导致此问题,但选择更大的数据量和相同数量的列不会.
感谢你对此的看法.谢谢
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;
Run Code Online (Sandbox Code Playgroud)
通过使用上面的查询,我得到以下输出.
USER_ID | PRODUCT_ID | TIMESTAMPS
------------+------------------+-------------
1015826235 220003038067 1004841621
1015826235 300003861266 1005268799
1015826235 140002997245 1061569397
1015826235 *200002448035* 1005542471
Run Code Online (Sandbox Code Playgroud)
如果你比较以上output from the query with the below Table2 data,则product_id在last line of above output不与匹配ITEM_ID在下面的最后一行Table2数据.
BUYER_ID | ITEM_ID | CREATED_TIME
-------------+-------------------+------------------------
1015826235 220003038067 2001-11-03 19:40:21
1015826235 300003861266 2001-11-08 18:19:59
1015826235 140002997245 2003-08-22 09:23:17
1015826235 *210002448035* 2001-11-11 22:21:11 …Run Code Online (Sandbox Code Playgroud)