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

【踩坑】SparkSQL union/unionAll 函数的去重问题

【踩坑】SparkSQL union/unionAll 函数的去重问题

  • 测试数据
case class Employee(first_name:String)val employeeDF1 = spark.createDataset(Seq( Employee("Mary"), Employee("Mandy"),Employee("Kurt")
))
val employeeDF2 = spark.createDataset(Seq( Employee("Mary"), Employee("Julie"), Employee("Mandy"),Employee("Julie"), Employee("Kurt")
))
  • 无论是union还是unionall都不会去重
employeeDF1.union(employeeDF2).show

在这里插入图片描述

employeeDF1.unionAll(employeeDF2).show

在这里插入图片描述

  • 当通过spark.sql执行方式时,union可以去重
employeeDF1.createOrReplaceTempView("ds1")
employeeDF2.createOrReplaceTempView("ds2")
spark.sql("select * from ds1 union select * from ds2").show

在这里插入图片描述

spark.sql("select * from ds1 union all select * from ds2").show

在这里插入图片描述

  • 误区
    • SQL标准查询语言 层面(如hive环境):union去重,unionAll简单合并性能较好
    • Spark union 默认按列的位置直接合并,很可能字段错误合并。可使用unionByName作为替代
    • 最新官方集合操作文档:https://spark.apache.org/docs/latest/sql-ref-syntax-qry-select-setops.html#set-operators
http://www.lryc.cn/news/515432.html

相关文章:

  • 域上的多项式环,整除,相通,互质
  • 计算机毕业设计PyHive+Hadoop深圳共享单车预测系统 共享单车数据分析可视化大屏 共享单车爬虫 共享单车数据仓库 机器学习 深度学习
  • Julia语言的学习路线
  • 对计网大题的一些指正(中间介绍一下CDM的原理和应用)
  • UGUI 优化DrawCall操作记录(基于Unity2021.3.18)
  • 前端实现大文件上传(文件分片、文件hash、并发上传、断点续传、进度监控和错误处理,含nodejs)
  • es单机安装脚本自动化
  • Java 数据库连接 - Sqlite
  • CentOS — 目录管理
  • 【第二部分--Python之基础】04 函数
  • 我们公司只有3个人,一个前端,一个后端
  • 基于LabVIEW的BeamGage自动化接口应用
  • 【AI编辑器】Cursor与DeepSeek模型的集成:提升开发效率的新选择
  • vue2实现excel文件预览
  • STM32 和 ESP32
  • R语言中的时间序列分析·
  • QML学习(六) anchors锚点和坐标,以及anchors锚点的使用
  • BFS广度优先搜索详解
  • vue项目利用webpack进行优化案例
  • 如何单独安装 MATLAB 工具箱
  • 组网实训实现
  • openbmc sdk09.03 适配(一)
  • SQL使用存储过程
  • C语言----函数、指针、数组
  • 基于Java的敬老院管理系统的设计和实现【源码+文档+部署讲解】
  • 12306分流抢票软件 bypass v1.16.43 绿色版(春节自动抢票工具)
  • 【数据仓库】hadoop3.3.6 安装配置
  • 小试牛刀-SpringBoot集成SOL链
  • 批量插入报错: No value specified for parameter
  • VSCode设置ctrl或alt+mouse(left)跳转