栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

【Spark】join连接测试

【Spark】join连接测试

1、代码

package com.gl.test


import org.apache.spark.sql.{Dataframe, SparkSession}

object Test {

  case class Stu(name: String, sex: String)
  case class Info(name: String, address: String,phone:String)
  def main(args: Array[String]): Unit = {
    val spark = SparkSession.builder().master("local[1]").appName("testDate").getOrCreate()

    import spark.implicits._
    val sc = spark.sparkContext
    sc.setLogLevel("ERROR")

    val StudentDF: Dataframe = Seq(
      Stu("Join","M"),
      Stu("Tom","M"),
      Stu("Marry","F"),
      Stu("Alex","F")
    ).toDF()

    StudentDF.createTempView("stuTable")
    val InfoDF: Dataframe = Seq(
      Info("Join","shangHai","188****"),
      Info("Tom","BeiJing","177****"),
      Info("Carry","nanJing","155****")
    ).toDF()

    InfoDF.createTempView("infoTable")

    
    println("################################左连接#############################")
    spark.sql("select * from stuTable t1 left join infoTable t2 on t1.name=t2.name").show()
    StudentDF.join(InfoDF,Seq("name"),"left").show()
    StudentDF.joinWith(InfoDF,StudentDF("name")===InfoDF("name"),"left").show()

    
    println("################################内连接#############################")
    spark.sql("select * from stuTable t1,infoTable t2 where t1.name=t2.name").show()
    spark.sql("select * from stuTable t1 inner join infoTable t2 on t1.name=t2.name").show()
    StudentDF.join(InfoDF,StudentDF("name")===InfoDF("name")).show() //默认内连接
    StudentDF.joinWith(InfoDF,StudentDF("name")===InfoDF("name")).show() //默认内连接
    StudentDF.join(InfoDF,StudentDF("name")===InfoDF("name"),"inner")
      .select(StudentDF("name"),StudentDF("sex"),InfoDF("address"),InfoDF("phone"))
      .show()


    
    println("################################右连接#############################")
    spark.sql("select * from stuTable t1 right join infoTable t2 on t1.name=t2.name").show()

    
    println("################################全连接#############################")
    spark.sql("select * from stuTable t1 full join infoTable t2 on t1.name=t2.name").show()

    
    println("################################左外连接#############################")
    StudentDF.join(InfoDF,StudentDF("name")===InfoDF("name"),"leftouter").show()

    
    println("################################右外连接#############################")
    StudentDF.join(InfoDF,StudentDF("name")===InfoDF("name"),"rightouter").show()

    
    println("################################全外连接#############################")
    StudentDF.join(InfoDF,StudentDF("name")===InfoDF("name"),"fullouter").show()

    spark.stop()
  }
}

2、输出

################################左连接#############################
+-----+---+----+--------+-------+
| name|sex|name| address|  phone|
+-----+---+----+--------+-------+
| Join|  M|Join|shangHai|188****|
|  Tom|  M| Tom| BeiJing|177****|
|Marry|  F|null|    null|   null|
| Alex|  F|null|    null|   null|
+-----+---+----+--------+-------+

+-----+---+--------+-------+
| name|sex| address|  phone|
+-----+---+--------+-------+
| Join|  M|shangHai|188****|
|  Tom|  M| BeiJing|177****|
|Marry|  F|    null|   null|
| Alex|  F|    null|   null|
+-----+---+--------+-------+

+---------+--------------------+
|       _1|                  _2|
+---------+--------------------+
| [Join,M]|[Join,shangHai,18...|
|  [Tom,M]|[Tom,BeiJing,177*...|
|[Marry,F]|                null|
| [Alex,F]|                null|
+---------+--------------------+

################################内连接#############################
+----+---+----+--------+-------+
|name|sex|name| address|  phone|
+----+---+----+--------+-------+
|Join|  M|Join|shangHai|188****|
| Tom|  M| Tom| BeiJing|177****|
+----+---+----+--------+-------+

+----+---+----+--------+-------+
|name|sex|name| address|  phone|
+----+---+----+--------+-------+
|Join|  M|Join|shangHai|188****|
| Tom|  M| Tom| BeiJing|177****|
+----+---+----+--------+-------+

+----+---+----+--------+-------+
|name|sex|name| address|  phone|
+----+---+----+--------+-------+
|Join|  M|Join|shangHai|188****|
| Tom|  M| Tom| BeiJing|177****|
+----+---+----+--------+-------+

+--------+--------------------+
|      _1|                  _2|
+--------+--------------------+
|[Join,M]|[Join,shangHai,18...|
| [Tom,M]|[Tom,BeiJing,177*...|
+--------+--------------------+

+----+---+--------+-------+
|name|sex| address|  phone|
+----+---+--------+-------+
|Join|  M|shangHai|188****|
| Tom|  M| BeiJing|177****|
+----+---+--------+-------+

################################右连接#############################
+----+----+-----+--------+-------+
|name| sex| name| address|  phone|
+----+----+-----+--------+-------+
|Join|   M| Join|shangHai|188****|
| Tom|   M|  Tom| BeiJing|177****|
|null|null|Carry| nanJing|155****|
+----+----+-----+--------+-------+

################################全连接#############################
+-----+----+-----+--------+-------+
| name| sex| name| address|  phone|
+-----+----+-----+--------+-------+
|  Tom|   M|  Tom| BeiJing|177****|
| Alex|   F| null|    null|   null|
| Join|   M| Join|shangHai|188****|
| null|null|Carry| nanJing|155****|
|Marry|   F| null|    null|   null|
+-----+----+-----+--------+-------+

################################左外连接#############################
+-----+---+----+--------+-------+
| name|sex|name| address|  phone|
+-----+---+----+--------+-------+
| Join|  M|Join|shangHai|188****|
|  Tom|  M| Tom| BeiJing|177****|
|Marry|  F|null|    null|   null|
| Alex|  F|null|    null|   null|
+-----+---+----+--------+-------+

################################右外连接#############################
+----+----+-----+--------+-------+
|name| sex| name| address|  phone|
+----+----+-----+--------+-------+
|Join|   M| Join|shangHai|188****|
| Tom|   M|  Tom| BeiJing|177****|
|null|null|Carry| nanJing|155****|
+----+----+-----+--------+-------+

################################全外连接#############################
+-----+----+-----+--------+-------+
| name| sex| name| address|  phone|
+-----+----+-----+--------+-------+
|  Tom|   M|  Tom| BeiJing|177****|
| Alex|   F| null|    null|   null|
| Join|   M| Join|shangHai|188****|
| null|null|Carry| nanJing|155****|
|Marry|   F| null|    null|   null|
+-----+----+-----+--------+-------+
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/327294.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号