spark中将两个DataFrame并在一起

本文介绍在Spark中使用DataFrame进行Join操作的两种方法:通过生成唯一ID列进行连接和利用RDD的zip()/zipPartitions()函数。同时对比了两种方法的特点,并提供了具体的代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

1.可以先生成一列唯一的id列,再进行join

生成id列方法可以看我的另一篇:https://blog.youkuaiyun.com/liaodaoluyun/article/details/86232639

2.转成rdd,在使用zip()/zipPartitions()

 val df1: DataFrame = spark.range(0,10).toDF("col1")
 val df2: DataFrame = spark.range(10,20).toDF("col2")

 val tempRDD1: RDD[(Row, Row)] = df1.rdd.zip(df2.rdd)
 
 val tempRDD2 = tempRDD.map(x=>{
   Row(x._1.get(0),x._2.get(0))
 })
 val schema= new StructType().add("col1","long").add("col2","long")
 spark.createDataFrame(tempRDD1,schema).show()

 

 zip()要求两个RDD的partition数及每个分区里面记录数量都要相同

zipPartitions()要求分区数相同,不要求每个分区相同数量的记录

 

如果有其他的方法,欢迎交流!

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值