You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Hadoop/Hive:将字典组成的数组拆分为多行的技术求助

解决字典数组拆分为多行的问题

嘿,我懂你的困扰啦——你之前错误地用了split()函数,而它是用来处理字符串的,但你的recommendations字段本身就是字典组成的数组类型,完全不需要用split()来转换!直接用explode()配合LATERAL VIEW就能搞定。

正确的基础拆分SQL

先把数组里的每个字典拆成单独的行,SQL应该这么写:

%sql 
SELECT userId, movie_rec 
FROM user_rec 
LATERAL VIEW explode(recommendations) AS movie_rec 
WHERE userId = 575

这个语句会把recommendations数组里的每一个字典元素,都拆成一行,和对应的userId关联起来。

如果需要提取字典里的具体字段

要是你还想把字典里的键值(比如电影ID、推荐分数这类)单独拆成列,可以直接通过.来访问字典的键:

%sql 
SELECT 
    userId,
    movie_rec.movieId AS movie_id,
    movie_rec.score AS recommendation_score
FROM user_rec 
LATERAL VIEW explode(recommendations) AS movie_rec 
WHERE userId = 575

这样就能得到你期望的那种每行对应一个推荐项、字段清晰的结果啦。

为啥之前的写法报错?

你之前用split(recommendations, ','),是把数组类型当成了字符串来处理,但split()的第一个参数必须是字符串,所以才会触发“参数需为字符串类型”的错误。而explode()是专门用来展开数组类型的函数,刚好匹配你的数据结构~

内容的提问来源于stack exchange,提问作者DJ-coding

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.08 19:38:12