hive - 如何将 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
;
推荐阅读
- typescript - 在 TypeScript 中添加文本和数字字符的函数覆盖
- cloud-foundry - 当应用程序(MuleSoft 3.9)部署在服务器上时如何下载文件?
- javascript - 如何连续使用两次切片
- unity3d - Unity 移动平台刚体之间的交互
- python - 使用 Sendgrid API 发送电子邮件
- python - 如果在队列中,音乐播放将不起作用
- php - PHP - 从数组中选择随机值?
- javascript - 如何在d3中将事件从一个元素传递到另一个元素?
- python - 让机器人重新发送嵌入
- javascript - 当值 = 1 时,将减少按钮切换为删除按钮