当前位置: 首页 > news >正文

生产环境_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. 小游戏(贪心)
  • RabbitMQ 的七种消息传递形式
  • python-单词本|通讯录
  • C语言面试之旅:掌握基础,探索深度(面试实战之ARM架构一)
  • Android : ViewModel+LiveData observe观察数据 改变内容简单应用
  • Raspberry Pi 2, 2 of n - Pi 作为 IoT 消息代理
  • PostgreSQL 连接更新操作
  • UE4/UE5 材质实现带框圆环
  • 快速搞懂蔚来的换电模式 是新能源车的未来吗
  • Vue2虚拟列表,umy-ui封装
  • 计算机网络之IP篇
  • 生产实践:Redis与Mysql的数据强一致性方案
  • springboot 整合 Spring Security 上篇
  • Dockerfile脚本编写流程及示例
  • 零信任组件和实施
  • 深入了解以太坊
  • “寒冬”下的金三银四跳槽季来了,帮你客观分析一下局面
  • 2017届校招提前批面试回顾
  • CEF与代理
  • Javascript Math对象和Date对象常用方法详解
  • Python 使用 Tornado 框架实现 WebHook 自动部署 Git 项目
  • Python代码面试必读 - Data Structures and Algorithms in Python
  • Python连接Oracle
  • Webpack入门之遇到的那些坑,系列示例Demo
  • WordPress 获取当前文章下的所有附件/获取指定ID文章的附件(图片、文件、视频)...
  • 分享一个自己写的基于canvas的原生js图片爆炸插件
  • 工作踩坑系列——https访问遇到“已阻止载入混合活动内容”
  • 排序算法学习笔记
  • mysql 慢查询分析工具:pt-query-digest 在mac 上的安装使用 ...
  • ​DB-Engines 11月数据库排名:PostgreSQL坐稳同期涨幅榜冠军宝座
  • #gStore-weekly | gStore最新版本1.0之三角形计数函数的使用
  • (02)Hive SQL编译成MapReduce任务的过程
  • (04)odoo视图操作
  • (173)FPGA约束:单周期时序分析或默认时序分析
  • (4)Elastix图像配准:3D图像
  • (delphi11最新学习资料) Object Pascal 学习笔记---第2章第五节(日期和时间)
  • (JS基础)String 类型
  • (TOJ2804)Even? Odd?
  • (附源码)spring boot基于Java的电影院售票与管理系统毕业设计 011449
  • (附源码)springboot太原学院贫困生申请管理系统 毕业设计 101517
  • (免费领源码)Python#MySQL图书馆管理系统071718-计算机毕业设计项目选题推荐
  • (四)图像的%2线性拉伸
  • (转)es进行聚合操作时提示Fielddata is disabled on text fields by default
  • (转)Linux NTP配置详解 (Network Time Protocol)
  • .net core 实现redis分片_基于 Redis 的分布式任务调度框架 earth-frost
  • .Net MVC4 上传大文件,并保存表单
  • .net 获取url的方法
  • .net 流——流的类型体系简单介绍
  • .netcore如何运行环境安装到Linux服务器
  • .net对接阿里云CSB服务
  • .NET设计模式(8):适配器模式(Adapter Pattern)
  • .sh 的运行
  • /proc/stat文件详解(翻译)
  • @FeignClient 调用另一个服务的test环境,实际上却调用了另一个环境testone的接口,这其中牵扯到k8s容器外容器内的问题,注册到eureka上的是容器外的旧版本...
  • @ResponseBody