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

【spark】spark列转行操作(json格式)

前言:一般我们列转行都是使用concat_ws函数或者concat函数,但是concat一般都是用于字符串的拼接,后续处理数据时并不方便。

需求:将两列数据按照设备id进行分组,每个设备有多个时间点位和对应值,将其一一对应,并以json形式存储。

设备id(device_name)点位值(point)

测量值(value)

key111.12
key121.32
key331.00

实现:

1、依旧需要对数据进行分组后聚合。由于有大量键值对,通过groupByKey进行分组

2、分组后得到(key, value[Iteratable])类型数据,对value进行转换后操作

import spark.implicits._//定义数据源
val seq = Seq(("key1","1","1.12"),("key1","3","1.32"),("key1","3","1.00")
).toDF("device","point","value")//数据处理
seq.as[pointKey].groupByKey(_.device).mapGroups((key, value) => {val list = value.toListval map = new mutable.HashMap[String, String]()list.foreach(elem => map.put(elem.point, elem.value))//此时的数据格式为map格式//map转jsonimplicit val formats: DefaultFormats.type = DefaultFormatsval json = Serialization.write(map)(key, map, json)})//样例类,用于装载
case class pointKey(device: String, point: String, value: String
)

http://www.lryc.cn/news/367893.html

相关文章:

  • 记录一次Linux启动kafka后并配置了本地服务连接远程kafka的地址后依旧连接localhost的问题
  • MacOS中Latex提示没有相关字体怎么办
  • 物资材料管理系统建设方案(Word)—实际项目方案
  • !力扣102. 二叉树的层序遍历
  • Vue3 + TS + Antd + Pinia 从零搭建后台系统(一) 脚手架搭建 + 入口配置
  • 中国同胞进来看看,很多外国人想通过CSDN坑咱们中国人
  • Web前端电话咨询:深度解析与实用指南
  • 使用python绘制季节图
  • VS2019专业版 C#和MFC安装
  • spring入门aop和ioc
  • 使用Python创建Word文档
  • 【设计模式】装饰器模式(结构型)⭐⭐
  • 计算机网络--应用层
  • 计算机网络 —— 网络层(IP数据报)
  • Clo3D导出服装动画,使用Unity3D展示
  • LSTM 词语模型上的动态量化
  • STM32 proteus + STM32Cubemx仿真教程(第一课LED教程)
  • 享元模式
  • R语言数据分析16-针对芬兰污染指数的分析与考察
  • Search用法Python:深入探索搜索功能的应用与技巧
  • STM32的FreeRtos的学习
  • 从零入手人工智能(2)——搭建开发环境
  • Web前端指南
  • AI菜鸟向前飞 — LangChain系列之十七 - 剖析AgentExecutor
  • nodejs 第三方库 exiftool-vendored
  • docker部署redis实践
  • Web前端学习之路:深入探索学习时长与技能进阶的奥秘
  • 如何不用命令创建用户
  • 基于Python实现可视化分析中国500强排行榜数据的设计与实现
  • VUE3 学习笔记(13):VUE3 下的Element-Plus基本使用