如何将 hive 的 explode() 函数用于复杂结构?



我的配置单元表如下所示:

CREATE EXTERNAL TABLE sample(id STRING,products STRUCT<urls:ARRAY<STRUCT<url:STRING>>,product_names:ARRAY<STRUCT<name:STRING>>,user:ARRAY<STRUCT<user_id:STRING>>>)
ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe'
STORED AS TEXTFILE
LOCATION ‘/user/input/sample’;

是否有任何方法可以分解products字段,以便将url、name和user_id存储到三个不同的列中?

有人能建议我也这样做吗。。。。

您应该能够按照分解您的三个数组

select url, product_name, user_id from sample
lateral VIEW explode(products.urls) A as url
lateral VIEW explode(products.product_names) B as product_name
lateral VIEW explode(products.user) C as user_id
;

最新更新