1.groupByKey、mapGroups、flatMapGroups结合使用

package com.DataSet;import bean.Dept;
import bean.Employee;
import org.apache.spark.sql.*;import java.util.ArrayList;
import java.util.List;/*** @author tli2* @createDate 2022/3/17 11:19*/
public class DataSetConvert {private static SparkSession spark = SparkSession.builder().master("local[*]").appName("handle data").getOrCreate();public static void main(String[] args) {spark.conf().set("spark.sql.crossJoin.enabled", "true");spark.sparkContext().setLogLevel("WARN");Encoder<Employee> employeeEncoder = Encoders.bean(Employee.class);String path = "spark-hello/src/main/resources/employees.json";Dataset<Employee> ds = spark.read().json(path).as(employeeEncoder);Dataset<Employee> out = flatMapGroups(groupByKey(ds));out.show();Dataset<Dept> out2 = mapGroups(groupByKey(ds));out2.show();}public static KeyValueGroupedDataset<String, Employee> groupByKey(Dataset<Employee> ds) {return ds.groupByKey(e -> e.getName(), Encoders.STRING());}public static Dataset<Dept> mapGroups(KeyValueGroupedDataset<String, Employee> kvgDS) {Dataset<Dept> out = kvgDS.mapGroups((key, eList) -> {Dept dept = new Dept();eList.forEachRemaining(e -> {dept.addEmployee(e);});return dept;}, Encoders.bean(Dept.class));return out;}public static Dataset<Employee> flatMapGroups(KeyValueGroupedDataset<String, Employee> kvgDS) {Dataset<Employee> out = kvgDS.flatMapGroups((key, eList) -> {List<Employee> employees = new ArrayList<>();eList.forEachRemaining(e -> {employees.add(e);});return employees.iterator();}, Encoders.bean(Employee.class));return out;}}

【spark使用】4. Dataset转换算子使用相关推荐

  1. spark之RDD的转换算子与行为算子的具体使用

    文章目录 1.Transform算子 1.1 map 1.2 flatmap 1.3 groupBy和groupBykey 1.4 filter 1.5 Mappartitions 1.6 mapVa ...

  2. spark应用程序转换_Spark—RDD编程常用转换算子代码实例

    Spark-RDD编程常用转换算子代码实例 Spark rdd 常用 Transformation 实例: 1.def map[U: ClassTag](f: T => U): RDD[U]  ...

  3. Spark的RDD转换算子

    目录 RDD转换算子 Value 类型 1. map 2. mapPartitions map 和mapPartitions 的区别 3. mapPartitionsWithIndex 4. flat ...

  4. spark常见转换算子(transformation)的操作

    package com.meng.nan.day717import org.apache.log4j.{Level, Logger} import org.apache.spark.{SparkCon ...

  5. spark中的转换算子和行动算子区别(transformations and actions)

    算子(RDD Operations): 对于初学者来说,算子的概念比较抽象,算子可以直译为 "RDD的操作", 我们把它理解为RDD的方法即可 . 转换算子(transformat ...

  6. Spark 常用算子详解(转换算子、行动算子、控制算子)

    Spark简介 Spark是专为大规模数据处理而设计的快速通用的计算引擎: Spark拥有Hadoop MapReduce所具有的优点,但是运行速度却比MapReduce有很大的提升,特别是在数据挖掘 ...

  7. Spark转换算子和执行算子

    在Spark编程模式下,所有的操作被分为转换(transformation)和执行(action)两种. 一般来说,转换操作是对一个数据集里的所有记录执行某种函数,从而使记录发生改变;而执行通常是运行 ...

  8. Spark转换算子大全以及案例实操

    1.RDD 转换算子 RDD转换算子实际上就是换了名称的RDD方法 RDD 根据数据处理方式的不同将算子整体上分为 Value 类型.双 Value 类型和 Key-Value 类型 算子:Opera ...

  9. 第三课 大数据技术之Spark-RDD介绍和转换算子

    第三课 大数据技术之Spark-RDD介绍和转换算子 文章目录 第三课 大数据技术之Spark-RDD介绍和转换算子 第一节 RDD相关介绍 1.1 什么是 RDD 1.2 核心属性 1.3 执行原理 ...

最新文章

  1. 新手问题之找不到R文件
  2. 第二次作业--线性表
  3. mongo mysql 聚合性能_Mongodb和Mysql的性能分析
  4. JNI中java类型的简写
  5. 了解如何通过Python使用SQLite数据库
  6. 查询linux上调度命令,浅析Linux中crontab任务调度
  7. ipad safari php readfile mp4,php – 在mac上的safari中没有加载Wav文件
  8. Linux下 中日文输入法安装简介
  9. npm 安装yarn
  10. SMAIL 语法大全(Dalvik 虚拟机操作码)
  11. 检定证书、校准证书与测试证书的区别
  12. 管理学定律二:鳄鱼法则与鲇鱼效应
  13. linux基本命令学习
  14. HTML网页设计作业个性潮流服装商城模板
  15. 稳压二极管与TVS管
  16. 【AI入门学习方法】
  17. Web安全——文件上传漏洞
  18. 关于http的Authorization
  19. 一名富有激情的潮汕籍工程师的进阶之路:数据即未来
  20. Nyquist-Shannon采样定理的理解

热门文章

  1. 全球智慧城市IOT市场规模报告
  2. proftpd java_基于 proftpd 配置加密 FTP
  3. python青少年趣味编程-青少年趣味编程Python系列课程--2018-07-17
  4. 累死你的不是工作是工作方式 好的团队会教你如何工作
  5. 海康大华安防网络摄像头Onvif、RTSP网络无插件直播流媒体服务解决方案EasyNVR表单重复提交的优化方案
  6. AMD首批Zen4架构CPU,连低端R5单核性能都超英特尔旗舰,最高降价700元
  7. Linux中update和upgrade的区别
  8. mac charles代理设置
  9. try catch 用法
  10. NVIDIA CUDA初级教程(P2-P3)CPU体系架构概述、并行程序设计概述