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()要求分区数相同,不要求每个分区相同数量的记录
如果有其他的方法,欢迎交流!