生产环境_sql获spark将课程与对应的选课人员以逗号分隔的形式存储

需求

将课程和人员列进行分组,然后将人员列聚合为逗号分隔的字符串。

数据

course | person
Math  | Alice  
Math  | Bob 
Math  | Charlie|
Science| David  
Science| Emily  
Science| Frank  

sql代码:

SELECT   
    课程,  
    GROUP_CONCAT(人员 ORDER BY 人员 SEPARATOR ',') AS 课程所有人员  
FROM   
    表  
GROUP BY   
    课程;

spark代码

import org.apache.spark.sql.SparkSession  
import org.apache.spark.sql.functions._  
  
val spark = SparkSession.builder()  
    .appName("CourseMembers")  
    .master("local[*]")  // 在本地运行,使用所有可用核  
    .getOrCreate()  
  
// 数据存在一个叫做 "courses" 的 DataFrame 中  
val courses = spark.read.format("csv").option("header", "true").load("path_to_your_data.csv")  
  
// 使用 groupBy 和 agg 函数来根据课程名聚合,并使用 collect_list 函数将人员列聚合为逗号分隔的字符串  
val courseMembers = courses.groupBy("course").agg(concat_ws(",", "person").alias("course_members"))  
  
// 结果  
courseMembers.show()

结果

Math  | Alice,Bob,Charlie  
Science| David,Emily,Frank
 

最近更新

  1. TCP协议是安全的吗?

    2023-12-05 19:06:07       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-05 19:06:07       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-05 19:06:07       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-05 19:06:07       18 阅读

热门阅读

  1. 数据结构基础(不带头节点的单向非循环链表)

    2023-12-05 19:06:07       36 阅读
  2. 数据结构基础(带头节点的双向循环链表)

    2023-12-05 19:06:07       41 阅读
  3. Python函数(一)

    2023-12-05 19:06:07       42 阅读
  4. JWT 认证机制

    2023-12-05 19:06:07       28 阅读
  5. 【Node.js】笔记整理 1 - 基础知识

    2023-12-05 19:06:07       38 阅读
  6. 学习c#的第二十四天

    2023-12-05 19:06:07       35 阅读
  7. SSH:安全的远程登录和数据传输工具

    2023-12-05 19:06:07       38 阅读