spark 两个dataFrame之间join 空值操作

本文探讨了在Spark中如何处理DataFrame join时遇到的空值问题。通过示例展示了使用默认join操作会过滤掉含有空值的记录,而通过特定符号可以包含空值进行join。作者还提供了一个自定义方法来简化这种操作,并邀请读者分享更优的解决方案。

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

spark Join空值操作

开门见山
  1. 准备数据:
    val struct1: StructType = StructType(Seq(
      StructField("id", IntegerType, true),
      StructField("name", StringType, true),
      StructField("age", StringType, true)
    ))

    val javaRows: util.List[Row] = List[Row](
      Row(1, "zhangsan", "18"),
      Row(1, null, "19"),
      Row(2, "wangwu", "24"),
      Row(4, "maliu", "16")
    ).asJava


    val struct2: StructType = StructType(Seq(
      StructField("id", IntegerType, true),
      StructField("name", StringType, true),
      StructField("english", StringType, true)
    ))

    val javaRows1: util.List[Row] = List[Row](
      Row(1, "xiaohong", "64"),
      Row(1, null, "56"),
      Row(3, "xiaomin", "65"),
      Row(4, null, "83")
    ).asJava

    val df1: DataFrame = spark.createDataFrame(javaRows, struct1)
    val df2: DataFrame = spark.createDataFrame(javaRows1, struct2)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值