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

如何在Spark SQL中合并相同movieId与movieName的genre列值?

用Spark SQL实现同电影的Genre合并

这事儿简单!你需要用到Spark SQL的分组聚合和字符串拼接函数,就能完美实现你要的效果。

核心思路

  1. 按movieId和movieName对数据分组,把同一部电影的所有行归为一组
  2. 把每组里的genre字段收集成一个列表
  3. 用指定分隔符(比如你例子里的|)把列表里的genre拼接成单个字符串

具体SQL代码

假设你的数据表名为movies,执行下面的查询就能得到目标结果:

SELECT 
  movieId,
  movieName,
  concat_ws('|', collect_list(genre)) AS genre
FROM movies
GROUP BY movieId, movieName
ORDER BY movieId;

代码解释

  • GROUP BY movieId, movieName:确保相同ID和名称的电影被分到同一组
  • collect_list(genre):将每组内的所有genre值收集成一个数组(保留原始顺序)
  • concat_ws('|', ...):用|作为分隔符,把数组里的genre元素拼接成一个完整的字符串,和你期望的输出格式完全匹配

额外小提示

如果你的数据里可能存在重复的genre(比如同一部电影被标记了两次action),可以把collect_list换成collect_set,它会自动去重,只保留唯一的genre值:

SELECT 
  movieId,
  movieName,
  concat_ws('|', collect_set(genre)) AS genre
FROM movies
GROUP BY movieId, movieName
ORDER BY movieId;

内容的提问来源于stack exchange,提问作者Chandrasekhar Vasamsetti

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 08:15:16