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

Spark DataFrame join后移除重复的列

在Spark,两个DataFrame做join操作后,会出现重复的列。例如:

 Dataset<Row> moviesWithRating = moviesDF.join(averageRatingMoviesDF,moviesDF.col("movieId").equalTo(averageRatingMoviesDF.col("movieId")));

其schema如下:

//moviesWithRating.printSchema();/*** root*  |-- _id: struct (nullable = true)*  |    |-- oid: string (nullable = true)*  |-- actors: string (nullable = true)*  |-- description: string (nullable = true)*  |-- directors: string (nullable = true)*  |-- genres: string (nullable = true)*  |-- issue: string (nullable = true)*  |-- language: string (nullable = true)*  |-- movieId: integer (nullable = true)*  |-- shoot: string (nullable = true)*  |-- timeLong: string (nullable = true)*  |-- title: string (nullable = true)*  |-- movieId: integer (nullable = true)*  |-- avgRating: double (nullable = true)*/

我们在继续操作这个DataFrame时,可能就会报错,如下:org.apache.spark.sql.AnalysisException: Reference ‘movieId’ is ambiguous

解决方案有两种方法可以用来移除重复的列

  • 方法一:join表达式使用字符串数组(用于join的列)
Seq<String> joinColumns = JavaConversions.asScalaBuffer(Arrays.asList("movieId", "movieId")).toList();Dataset<Row> moviesWithRating = moviesDF.join(averageRatingMoviesDF,joinColumns,"inner");

这里DataFrame moviesDF和averageRatingMoviesDF使用了movieId和movieId两列来做join,返回的结果会对这两列去重
scala解决方案:

df1.join(df2, Seq("id","name"),"left")  // df1和df2使用了id和name两列来做join,返回的结果会对这两列去
  • 方法二:使用select返回指定的列
Dataset<Row> moviesWithRating = moviesDF.join(averageRatingMoviesDF,moviesDF.col("movieId").equalTo(averageRatingMoviesDF.col("movieId"))).select(moviesDF.col("movieId"),col("actors"),col("description"),col("directors"),col("genres"),col("issue"),col("language"),col("shoot"),col("timeLong"),col("title"),col("avgRating"));

说明:
如果列较少, 推荐使用第二种.
如果列较多, 推荐使用第一种.

相关文章:

Spark DataFrame join后移除重复的列

在Spark&#xff0c;两个DataFrame做join操作后&#xff0c;会出现重复的列。例如&#xff1a; Dataset<Row> moviesWithRating moviesDF.join(averageRatingMoviesDF,moviesDF.col("movieId").equalTo(averageRatingMoviesDF.col("movieId")));其s…...

NextJS工程部署到阿里云linux Ecs

nextjs项目有多种部署方式&#xff0c;本文介绍最简单的一种方式&#xff0c;将源码上传到云服务器&#xff0c;编译后使用pm2后台运行nextjs工程。 检查node、npm是否安装 查看npm版本&#xff0c;如果版本较低先升级npm版本 npm -v卸载 yum remove nodejs npm -y安装新版…...

汽车以太网IOP测试新利器

IOP测试目的 汽车以太网物理层IOP&#xff08;Interoperability &#xff09;测试&#xff0c;即测试被测对象以太网物理层之间的互操作性。用于验证车载以太网PHY能否在有限时间内建立稳定的链路&#xff1b;此外&#xff0c;还用于验证车载以太网PHY可靠性相关的诊断特性&am…...

高防IP是什么?如何隐藏源站IP?如何进行防护?

高防IP是针对互联网服务器遭受大流量的DDoS攻击后导致服务不可用的情况下,推出的付费增值服务。用户在数据不转移的情况下,就可以通过配置高防IP , 将攻击流量引流到高防|P,确保源站的稳定可靠。高防IP采用的技术手段包括DDoS防护、WAF ( Web应用程序防火墙)等,它能够有效抵御来…...

ElasticSearch---查询es集群状态、分片、索引

查看es集群状态&#xff1a; curl -XGET http://localhost:9200/_cat/health?v如果?后面加上pretty&#xff0c;能让返回的json格式化。 加上?v的返回结果&#xff0c;如下&#xff1a; epoch timestamp cluster status node.total node.data shards pri rel…...

Angular 使用教程——基本语法和双向数据绑定

Angular 是一个应用设计框架与开发平台&#xff0c;旨在创建高效而精致的单页面应用 Angular 是一个基于 TypeScript 构建的开发平台。它包括&#xff1a;一个基于组件的框架&#xff0c;用于构建可伸缩的 Web 应用&#xff0c;一组完美集成的库&#xff0c;涵盖各种功能&…...

【ASP.NET】Hello World

文章目录 1. 几个概念2. 搭建开发环境2.1 .NET SDK2.2 IDE & Editor 3 First Project3.1 步骤3.2 模板3.3 项目结构3.4 请求的处理流程 Reference Link 1. 几个概念 .NET 是一个平台&#xff0c;包括 .NET Framework、.NET Core、ASP.NET、C#等&#xff0c;可以构建桌面、W…...

AI创作系统ChatGPT网站源码+支持最新GPT-Turbo模型+支持DALL-E3文生图/AI绘画源码

一、AI创作系统 SparkAi创作系统是基于OpenAI很火的ChatGPT进行开发的Ai智能问答系统和Midjourney绘画系统&#xff0c;支持OpenAI-GPT全模型国内AI全模型。本期针对源码系统整体测试下来非常完美&#xff0c;可以说SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。那么如…...

C#_查找图片(按键精灵找图)

一、class internal class Picture{/// <summary>/// 查找图片&#xff0c;不能镂空/// </summary>/// <param name"subPic"></param>/// <param name"searchRect">如果为empty&#xff0c;则默认查找整个图像</param>…...

C#中.NET Framework4.8 控制台应用通过EF访问新建数据库

目录 一、 操作步骤 二、编写EF模型和数据库上下文 三、 移植&#xff08;Migrations&#xff09;数据库 四、编写应用程序并运行 前文已经说过.NET Framework4.8 控制台应用通过EF访问已经建立的数据库&#xff0c;这里说的已经建立的数据库指的是已经建立的SQLServer那样…...

无防御香港服务器如何防CC

虽然相对于DDos攻击&#xff0c;CC攻击的防护危害性相对没有那么大&#xff0c;但是像香港地区普遍对内地的网络比较小的话&#xff0c;CC攻击还是 蛮让人头痛的&#xff0c;实际上对CC的防护尤其是一些小体量的网站&#xff0c;租用高防服务器是划不来的&#xff0c;如果服务器…...

MyBatis的插件能在哪些地方进行拦截?

程序员的公众号&#xff1a;源1024&#xff0c;获取更多资料&#xff0c;无加密无套路&#xff01; 最近整理了一波电子书籍资料&#xff0c;包含《Effective Java中文版 第2版》《深入JAVA虚拟机》&#xff0c;《重构改善既有代码设计》&#xff0c;《MySQL高性能-第3版》&…...

【BUG库】 记录自己学习工作中遇到的程序BUG

BUG库 CGoalgorithm环境相关vscode -- 保存 在这篇博客中 我会记录自己在学习和工作中遇到的一系列bug C Go algorithm 环境相关 vscode – 保存 使用vscode时未保存代码就使用终端运行 vscode和终端并不是实时同步的 需要我们自己手动使用ctrl s同步 解决方法 自己手动…...

卡尔曼家族从零解剖-(07) 高斯分布积分为1,高斯分布线性变换依旧为高斯分布,两高斯函数乘积仍为高斯。

讲解关于slam一系列文章汇总链接:史上最全slam从零开始&#xff0c;针对于本栏目讲解的 卡尔曼家族从零解剖 链接 :卡尔曼家族从零解剖-(00)目录最新无死角讲解&#xff1a;https://blog.csdn.net/weixin_43013761/article/details/133846882 文末正下方中心提供了本人 联系…...

设计模式-访问者模式(Visitor)

设计模式-访问者模式&#xff08;Visitor&#xff09; 一、访问者模式概述1.1 什么是访问者模式1.2 简单实现访问者模式1.3 使用访问者模式的注意事项 二、访问者模式的用途三、访问者模式实现方式3.1 递归遍历实现访问者模式3.2 迭代遍历实现访问者模式3.3 Java8 Stream API 实…...

C++二分查找算法:132 模式解法二枚举2

题目及解法一&#xff1a; https://blog.csdn.net/he_zhidan/article/details/134362273 分析 第一步&#xff0c;选择各3对应的1&#xff0c;如果有多个符合对应最小的1&#xff0c;记录num[0,j)中的最小值iMin&#xff0c;如果nums[j]大于iMin&#xff0c;则m3To1 [nums[j…...

JavaWeb-HTML

​ 一、什么是HTML HTML是hypertext markup language&#xff08;超文本标记语言&#xff09;的缩写。HTML文件本质上是文本文件&#xff0c;普通的文本文件只能显示字符&#xff0c;而HTML文件可以在浏览器上显示更丰富的信息&#xff08;如图片等&#xff09;。 超文本&am…...

新外卖霸王餐小程序、H5、微信公众号版外卖系统源码

最新外卖霸王餐小程序、H5、微信公众号版外卖系统源码、霸王餐美团、饿了么系统&#xff0c;粉丝裂变玩源码下载&#xff0c;外卖cps小程序项目&#xff0c;外卖红包cps带好友返利佣金分销系统程序、饿了么美团联盟源码&#xff0c;外卖cps带分销返利后端源码&#xff0c;基于L…...

LeetCode - #89 格雷编码

文章目录 前言1. 描述2. 示例3. 答案关于我们 前言 我们社区陆续会将顾毅&#xff08;Netflix 增长黑客&#xff0c;《iOS 面试之道》作者&#xff0c;ACE 职业健身教练。&#xff09;的 Swift 算法题题解整理为文字版以方便大家学习与阅读。 LeetCode 算法到目前我们已经更新…...

11.3SpringMVC

一.概念 1.SpringMvc: a.构建在Servlet(api)基础上. b.是一个Web框架(HTTP). c.来自于Spring webMVC模块. 2.MVC 二.注册路由的注解 1.RequestMapping("/test") // 路由注册 注意: 这个注解在类和方法上都要使用,代表不同等级的路由. 2.RestController a)R…...

极致精简,功能强大的PDF编辑工具

这是一款功能全面的PDF编辑工具 你只需要导入一份PDF格式文件 就可以快速的对它进行插入 批注编辑保护转换等各种操作 而且无需登录 也可以直接使用 在插入选项中可以进行插入文字图片 页面页眉页脚页码文档背景水印视频音频等 在批注选项中可以管理批注隐藏批注 高亮显示 文本…...

如何用免费工具解锁QQ音乐、网易云音乐等加密格式:3分钟解决音乐播放限制

如何用免费工具解锁QQ音乐、网易云音乐等加密格式&#xff1a;3分钟解决音乐播放限制 【免费下载链接】unlock-music 在浏览器中解锁加密的音乐文件。原仓库&#xff1a; 1. https://github.com/unlock-music/unlock-music &#xff1b;2. https://git.unlock-music.dev/um/web…...

【小白快速上手】 OpenClaw 安装部署全流程(含安装包)

OpenClaw 一键安装包&#xff5c;一键部署&#xff0c;告别复杂环境配置 适配系统&#xff1a;Windows10/11 64 位当前版本&#xff1a;v2.7.5&#xff08;虾壳云版&#xff09;核心优势&#xff1a;全程可视化操作&#xff0c;无需命令行、无需手动配置 Python/Node.js&#…...

在多模型聚合场景下利用Taotoken实现API调用的自动降级与容灾

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 在多模型聚合场景下利用Taotoken实现API调用的自动降级与容灾 对于依赖大模型API的生产系统而言&#xff0c;服务的连续性与稳定性…...

别再手动调相机了!用Cinemachine插件5分钟搞定Unity第三人称跟随镜头(含FreeLook Camera配置)

别再手动调相机了&#xff01;用Cinemachine插件5分钟搞定Unity第三人称跟随镜头当你在Unity中开发角色扮演游戏时&#xff0c;是否经常被这些问题困扰&#xff1a;角色移动时镜头抖动、转向时视角卡顿、不同地形下镜头穿模&#xff1f;传统的手动编写相机跟随脚本不仅耗时耗力…...

小学阶段物理学习书籍推荐

结合小学阶段认知特点&#xff0c;推荐以下几本兼具趣味性和实用性的物理启蒙书籍&#xff0c;适配不同年级孩子的学习需求&#xff1a; 一、低龄&#xff08;1-2年级/6-8岁&#xff09;&#xff1a;趣味感知&#xff0c;激发好奇 1、漫画物理全套6册 用孩子最喜欢的漫画形式拆…...

5分钟快速解锁中兴光猫:终极免费工具zteOnu完整指南

5分钟快速解锁中兴光猫&#xff1a;终极免费工具zteOnu完整指南 【免费下载链接】zteOnu A tool that can open ZTE onu device factory mode 项目地址: https://gitcode.com/gh_mirrors/zt/zteOnu 对于网络管理员和技术爱好者来说&#xff0c;中兴光猫的权限限制常常成…...

多臂老虎机算法:实现模型部署的自动化与自适应决策

1. 项目概述与核心痛点在机器学习项目的全生命周期里&#xff0c;模型部署上线从来都不是终点&#xff0c;而恰恰是真正挑战的开始。相信很多一线的算法工程师和MLOps工程师都经历过这样的场景&#xff1a;你耗费数周心血&#xff0c;在离线验证集上刷出了历史新高的AUC&#x…...

Unity场景交互动画工程化实践:触发、动画、物理与渲染四层协同

1. 这不是“加个动画”那么简单&#xff1a;为什么90%的Unity场景交互动画最终显得廉价又生硬&#xff1f; “用 Unity 打造超酷场景交互动画”——这句话在B站、知乎和独立游戏开发群里的出现频率&#xff0c;大概和“三分钟学会Python”差不多。但真正跑完一个完整流程、让玩…...

NCM转MP3终极指南:3分钟解锁你的网易云音乐自由

NCM转MP3终极指南&#xff1a;3分钟解锁你的网易云音乐自由 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的歌曲换个设备就无法播放而烦恼吗&#xff1f;那些神秘的.ncm格式文件&#xff0c;只能在官方应用里…...