scala 基础 - join

【Spark】Spark Join类型及Join实现方式 在 Spark 中,常见的 Join 类型包括内连接、外连接(左外、右外、全外)和反连接。主要的 Join 实现方式有广播哈希连接(BHJ)、排序归并连接(SMJ)和哈希连接(SHJ)。 阅读详情

Spark DataFrame中join与SQL很像,都有inner join, left join, right join, full join;

类型说明
inner join内连接
left join左连接
right join右连接
full join全连接

spark join 看其原型

def join(right : DataFrame, usingColumns : Seq[String], joinType : String) : DataFrame 
def join(right : DataFrame, joinExprs : Column, joinType : String) : DataFrame 

joinType可以是”inner”、“left”、“right”、“full”分别对应inner join, left join, right join, full join,默认值是”inner”,代表内连接

例子:  

 a表

idjob
1张3
2李四
3王武

b表   

idjobparent_id
1231
2342
3344

内连接

内连接:内连接查询操作列出与连接条件匹配的数据行,它使用比较运算符比较被连接列的列值。

df.join(df, Seq("city", "state"), "inner").show
df.join(df, Seq("city", "state")).show

 Seq是指连接的字段,这个相当于

 SELECT   a.au_fname,   a.au_lname,   p.pub_name   
   FROM   authors   AS   a   INNER   JOIN   publishers   AS   p   
        ON   a.city   =   p.city   
        AND   a.state   =   p.state   
  ORDER   BY   a.au_lname   ASC,   a.au_fname   ASC  

结果是     

  1   张三               1     23     1   
  2   李四                  2     34     2

内连接指定列名

df.join(df, $"city"===$"city", "inner").show
df.join(df, $"city"===$"city").show

左外连接

左联接:是以左表为基准,将a.stuid = b.stuid的数据进行连接,然后将左表没有的对应项显示,右表的列为NULL

df.join(df, Seq("city", "state"), "left").show

 结果是

  1   张三                  1     23     1   
  2   李四                  2     34     2   
  3   王武                  null  null null 

 

scala实战之SparkSQL应用实例(单表count和groupby多来源表join等) 前面几篇博客说了如何读取mysql数据库中的表到DataFrame中以及如何将结果写入到mysql中 今天这个实例主要实现应用sparksql完成用户日志数据的提取并转换成DataFrame(我们将其定义为表 user)另外我们要从mysql数据库中load一个用户配置表(这里定义为userinfo)我们将这两个表根据imei号进行join获得用户完整的信息数据 具体的环境见http://bl 阅读详情

相关推荐

flink1.15 异步维表Join 用于外部数据访问的异步 I/O scala版本

resultFuture.complete() 个数远少于输入个数,或者说Future阶段报错,你没有处理报错,导致没数据输出,即没有output的个数统计.直接Future{} 框起来就行,需要注意的是 后续必须匹配 Filure并处理异常,如需抛出,请加上。问什么有官方文档,我还要写个博客,因为scala Future这块有坑.flink统计反压是根据输入个数 输出个数统计的,也就是你。2 为什么我的任务不报错,也没有输出。2 为什么我的任务不报错,也没有输出。1 为什么我的算子显示反压100%

yy的博客 994

九、Scala中Join函数

Scala中的Join函数全解 一、RDD的Join操作有哪些? (一)Join:Join类似于SQL的inner join操作,返回结果是前面和后面集合中配对成功的,过滤掉关联不上的。源代码如下:   /**    * Return an RDD containing all pairs of elements with matching keys in `this` and `other`....

I want to know a little more. 1万+

基于STM32F407VET6的智能巡检小车灰度循迹系统优化设计

本文详细介绍了基于STM32F407VET6主控芯片的智能巡检小车灰度循迹系统优化设计。通过将传感器输出从数字量升级为模拟量以获取更丰富的路面信息,并采用PD控制算法结合速度管理策略,有效提升了小车在复杂弯道上的循迹稳定性与适应性。文章分享了硬件电路抗干扰设计、软件滤波及实战调优经验,为嵌入式开发者提供了从“能跑”到“跑得稳”的系统性解决方案。

weixin_28273593的博客 442

Spark Scala DataFram join 操作

package com.xh.movies import org.apache.spark.rdd.RDD import org.apache.spark.{SparkConf, SparkContext} import org.apache.spark.sql.{Row, SparkSession} import org.apache.spark.sql.types.{StringType,

2504

别再死记硬背了!用Python可视化带你直观理解柯西收敛定理(附NumPy代码)

本文通过Python可视化技术,结合NumPy和Matplotlib,直观展示柯西收敛定理的动态过程。文章提供了完整的代码实现,帮助读者从抽象数学定义过渡到具象理解,特别适合数学学习者和Python开发者。通过热力图和交互式参数探索,读者可以清晰观察数列收敛特性,提升数学分析的学习效率。

weixin_28465009的博客 185

银河麒麟服务器操作系统V10SP3 U盘安装中“基础软件仓库错误”的排查与修复指南

本文针对在无网络环境下使用U盘安装银河麒麟服务器操作系统V10SP3时,遇到的“基础软件仓库错误”问题,提供了详细的排查与修复指南。核心解决方案是通过进入救援模式,使用lsblk命令确定U盘实际设备路径,并在系统引导时手动添加inst.repo内核参数来指定安装源,从而绕过安装程序的自动探测故障,确保安装流程顺利进行。

ik67890123的博客 1193

Scala的join算子

1:使用Scala的算子join进行练习 val spark = SparkSession.builder().master("local[2]").appName("simple").getOrCreate() val visit = spark.sparkContext.parallelize(List(("index.html","1.2.3.4"),("about.html","

u013385925的专栏 1万+

BUUCTF逆向题Youngter-drive

其实线程一代码我自己也不大理解,看了正确的 flag 后,我自己推出来的是这样:在 couece 中取出字符,然后在 QWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnm 中找出一样的,取出该字符在 QWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnm 中的下标,如果取出的字符是大写则 在ASCII中找出【下标 - 38】值对应的字符替换couece中的字符,同理,小写就减 96。

于高山之巅,方见大河奔涌;于群峰之上,更觉长风浩荡。 1090

【Scala】数据集成(join)

数据集成是将多文件或者多数据库中的数据进行合并,然后存放在一个一致的数据存储中 。 数据集成一般通过 join、 union 或 merge 等关键字把两个(或多个)数据集连接在一起, SparkSQL (包括DataFrame)有join方法, Pandas下有merge方法。 数据集成往往需要耗费很多资源 ,尤其是大数据间的集成涉及 shuffle 过程, 有时需要牵涉多个节点,所以 除了数据一致性外,性能问题常常不请自来,需要我们特别留心。 传统数据库 一般是在单机上采用 hash jo

yuxeaotao的博客 771

【OCPP】ocpp1.6协议3.3章节:功能配置文件及接口

Smart Charging Profile中定义了4个接口请求,即GetCompositeSchedule、ClearChargingProfile、SetChargingProfile和ClearCache等。Smart Charging: 包含智能充电相关的功能,如计划充电,报告充电计划,并改变充电速度。Core: 包含电动汽车充电相关的基础功能,如启动和停止充电,更改充电配置,报告充电状态等。Reservation: 包含预约服务相关的功能,如创建,取消和更改预约。

qq_53871375的博客 2170

从基础到前沿:深度剖析光束整形与扫描技术

光束扫描的核心在于通过特定手段改变光束的传播方向,从而实现对目标区域的扫描。在这个过程中,振镜、声光偏转器、电光偏转器等元件发挥着关键作用。振镜是一种常见的光束扫描元件,它主要由电机、反射镜和透镜组成。当电机驱动反射镜旋转时,根据光的反射定律,反射镜会改变入射光线的反射方向。假设初始时光束垂直入射到反射镜上,当反射镜绕某一轴旋转一定角度时,光束的反射方向就会相应改变,从而实现光束在空间中的扫描。在激光打标设备中,通过控制振镜的快速摆动,能够使激光束在工件表面快速移动,完成各种图案和文字的标记。

远程部署调试 运行安装 项目调试 二次开发 项目技术新 持续迭代 部分源码免费分享 2097

Scala join

在Scala中 join默认为取交集 即取数据量最小的那一边   Join类似于SQL的inner join操作,返回结果是前面和后面集合中配对成功的,过滤掉关联不上的。   leftOuterJoin:leftOuterJoin类似于SQL中的左外关联left outer join,返回结果以前面的RDD为主,关联不上的记录为空。   rightOuterJoin:rightOu...

zhangxinyu0827的博客 1771

OBYC自动科目确定整理

WGI是用来重估发货的,通过比较发货时的价格和最新计算的价格,以此将所有差异过账到分配给此事务码的总账科目。是工厂还是公司,一般项目中都是使用工厂,使用工厂的意思就是物料在每个工厂下有一个价格,如果使用公司,则一个公司下的所有工厂都使用一个价格。如果该物料用的是移动平均价,那么该库存依然还存在的情况下,这个价格差异会过账到存货科目上而不会过账到存货的价格差异科目上。用于确定存货评估过账的存货冲抵科目。事务码WGR是用来重估工厂收货的,根据 计算出来的价格差异,把库存的调整过账分配给这个事务码中的总账科目。

nopicture的博客 347

Scala Spark 得到最近一天的数据 重点:join

0.数据val data= """ user date item1 item2 1 2015-12-01 14 5.6 1 2015-12-01 10 0.6 1 2015-12-02 8 9.4 1 2015-12-02 90 1.3 2 2015-12-01 30 0.3 2 2015-12-01 89 1.2 2 2015-12

power0405hf的专栏 2757

OpenClaw实战系列07:定时任务与自动化工作流实战——让AI从“被动响应”到“主动执行”

通过本文的学习,你已经将 OpenClaw 从“被动应答”升级为“主动执行”的自动化引擎。定时简报:每天8点自动生成行业简报推送飞书/钉钉GitHub事件触发:PR合并自动触发Code ReviewAgent间协作:数据采集→分析→报告全自动流水线系统监控:定时检查服务器状态,异常自动告警核心收获掌握 OpenClaw 内置 Cron 系统的三种调度模式学会 Webhook 配置和事件触发机制理解 Agent 间通信的两种方式(sessions_spawn / sessions_send)

PeterPan的博客 691

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

【flink番外篇】9、Flink Table API 支持的操作示例(8)- 时态表的join(scala版本)

系统介绍某一知识点,并辅以具体的示例进行说明。1、Flink 部署系列本部分介绍Flink的部署、配置相关基础内容。2、Flink基础系列本部分介绍Flink 的基础部分,比如术语、架构、编程模型、编程指南、基本的datastream api用法、四大基石等内容。3、Flik Table API和SQL基础系列本部分介绍Flink Table Api和SQL的基本用法,比如Table API和SQL创建库、表用法、查询、窗口函数、catalog等等内容。

alanchanchn的专栏 6万+

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

scala中rdd无法join的问题

原始代码如下: import org.apache.spark.{SparkConf, SparkContext} import org.apache.log4j.{Level, Logger} object hello { def main(args: Array[String]) { Logger.getLogger("org.apache.hadoop").setLevel(Level.WARN) Logger.getLogger("org.apache.spark")

微电子学与固体电子学-俞驰 1093

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

使用Scala语言通过Spark实现Join

join join类似于SQL的innerjoin操作,返回结果是前面和后面集合中配对成功的,过滤掉关联不上的。 leftOuterJoin leftOuterJoin类似于SQL中的左外关联left outerjoin,返回结果以前面的RDD为主,关联不上的记录为空。 rightOuterJoin rightOuterJoin类似于SQL中的有外关联,返回结果以参数也就是右边的RDD为主,关联不上的记录为空 接下来我们通过SQL与代码相结合的方式,了解一下,如何使用Spark实现连接查询 ..

u014203254的博客 2390

spark java seq_Spark Dataframe join中用到Scala Seq提示没有序列化?

我在java spark-sql中想使用dataframe的多字段join功能,看了一下该接口如果要多字段join的话需要传入一个usingColumns.public org.apache.spark.sql.DataFrame join(org.apache.spark.sql.DataFrame right, scala.collection.Seq usingColumns, java.l...

weixin_33208391的博客 513

Scala版算子(包括:join,leftjoin,rightjoin,fulljoin,distinct,saveAsTextFile,foreachPartition,mapPartit)【代码】

package com.bjsxt.spark import org.apache.spark.SparkConf import org.apache.spark.SparkContext import scala.actors.threadpool.Arrays import scala.collection.mutable.ListBuffer object SparkJoin {  ...

wyqwilliam的博客 1933

初学Scala(1): Scala实现Hash Join

最近看了些Scala相关的内容,写了个简单的hash join。 jion过程 从数据源读取两个List[List[Any]](),我把所有的操作都放到List容器里进行 将两份数据集,hash到自己写的简单的SimpleHashTable里,每次put进去的时候会返回一个Int值,用于记录两份数据占据的bucket number集合 由于两份数据都是基于同一个hash方法进行hash的,join具体发生在两个hashTable对应的bucket之间 遍历需要进行join的buckets,每对bucket之

张包峰的博客 4666

第67课:Spark SQL下采用Java和Scala实现Join的案例综合实战(巩固前面学习的Spark SQL知识)

内容:     1.SparkSQL案例分析     2.SparkSQL下采用Java和Scala实现案例 一、SparkSQL下采用Java和Scala实现案例 学生成绩: {"name":"Michael","score":98} {"name":"Andy", "score":95} {"name":"Justin", &quot

someby的博客 1190

spark-scala transforamtion union join distinct

import org.apache.spark._ import org.apache.spark.network.netty.SparkTransportConf object Transformation { def main(args:Array[String]): Unit ={ val conf =new SparkConf().setAppName("Transformation1").setMaster("local") val spark=new SparkContex

weixin_40083227的博客 266
上一篇: scala 基础-flatMap
下一篇: scala word2vec 工程异常总结
coder_oyang
博客等级 码龄11年 91粉丝 90原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值