Spark2.2.0 MLlib dataframe join

原创
2021/06/07 15:20
阅读数 43

join方式

1、join 1

personDataFrame.join(orderDataFrame, personDataFrame("id_person") === orderDataFrame("id_person")).show()

2、join 2

df.join(df2, Seq("course","course"),"left_join").show()

3、join 3

df.join(df2, Seq("course"),"left_join").show()   效果类似 join2

join保存,都会存在重复列

1、采用join3方式

2、 返回的结果会对这两列去重

df1.join(df2, Seq("id","name"),"left")

3、采用删除列的方式 

df1.join(df2_id_renamed, on=df1.id== df2_id_renamed.id_2,how='inner').drop('id_2')

4、  使用select返回指定的列

val dfa  = Seq(("a", 1), ("b", 2)).toDF("key", "vala")
val dfb  = Seq(("a", 1)).toDF("key", "valb")
dfa.join(dfb, dfa("key") === dfb("key")).select(dfa("id"), dfb("valb")")

join的效率

1、设置 分区数量

2、采用广播变量

.join(broadcast(serviceNum), Seq("service"), "left_outer")

3、采用缓存

persist(StorageLevel.MEMORY_AND_DISK_SER_2)   这种方式速度很慢
filter($"interface" isNotNull).cache()    这种不容易看出来速度,跟没有加是一样的

 

 

展开阅读全文
加载中

作者的其它热门文章

打赏
0
0 收藏
分享
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部