Spark Sql 对 null 值多组测试用例分析

作者: 大猪大猪 | 来源:发表于2018-11-28 11:55 被阅读1次

有很多种情况,spark sql语句中的某些字段是空的,想要知道sql中聚合函数对null的影响结果,下面做了几个测试用例。

测试用例

准备三个case class

case class ChildLog(id:String,name:String)
case class WifeLog(id:String,name:String,child:ChildLog)
case class UserLog(id:String,name:String,wife:WifeLog)

准备三组数据

val list1 = Array(UserLog("1", "lake", null), UserLog("2", "admin", null))
val list2 = Array(UserLog("1", "lake", WifeLog(null,null,null)), UserLog("2", "admin", WifeLog("3", "coco",null)))
val list3 = Array(UserLog("1", "lake", WifeLog(null,null,ChildLog("hi","na"))), UserLog("2", "admin", WifeLog("3", "coco",null)))

初始化环境

val sparkConf = new SparkConf()
      .setMaster("local[1]")
      .setAppName("testNull")

    val spark = SparkSession
      .builder
      .config(sparkConf)
      .getOrCreate()

    val sc = spark.sparkContext

第一组

  1. 测试count对null值的结果
val list1 = Array(UserLog("1", "lake", null), UserLog("2", "admin", WifeLog("3", "coco",null)))
val listRdd = sc.parallelize(list3)

listRdd.toDS().createTempView("log")

spark.sql("select count(wife) from log").show

结果(对空值会忽略)

+-----------+
|count(wife)|
+-----------+
|          1|
+-----------+

结论(如下两个语句相等)

spark.sql("select count(wife) from log").show
spark.sql("select count(wife) from log where wife IS NOT NULL").show
  1. 如何统计null
spark.sql("select count(wife IS NULL) from log where").show

结果

+---------------------+
|count((wife IS NULL))|
+---------------------+
|                    1|
+---------------------+

第二组

  1. 测试子类case
spark.sql("select count(wife.id) from log").show

结果

+----------------------+
|count(wife.id AS `id`)|
+----------------------+
|                     1|
+----------------------+

结论(对子类case的空值也会忽略,对空的子类也会忽略)

第三组

测试多级子case的影响

spark.sql("select count(wife.child.id) from log").show

结果

+----------------------------+
|count(wife.child.id AS `id`)|
+----------------------------+
|                           1|
+----------------------------+

结论(不论子级多深,只统计非空值的数据)

相关文章

  • Spark Sql 对 null 值多组测试用例分析

    有很多种情况,spark sql语句中的某些字段是空的,想要知道sql中聚合函数对null的影响结果,下面做了几个...

  • Spark SQL中Dataframe join操作含null值

    当在Spark SQL中对两个Dataframe使用join时,当作为连接的字段的值含有null值。由于null表...

  • 07测试用例设计方法【黑盒-边界值分析法】

    黑盒测试用例设计方法-边界值分析法 边界值分析法一般是对等价类划分法的补充【边界值分析法】对被测程序的输入域或输出...

  • 安全测试

    安全测试用例 常见的安全测试应该能够做到check以下内容 测试用例应该 包含每个HTTP参数的SQL注入测试 测...

  • 软件测试基本流程

    1.需求分析(产品经理) 2.编写测试用例(测什么,怎么测) 3.评审测试用例 4.搭建测试环境 5.等待开发提交...

  • 1.软件测试流程

    1.需求分析 2.编写测试用例(测什么,怎么测) 3.评审测试用例 4.搭建测试环境 5.等待开发提交测试包 6....

  • 部分spark参数解析

    配置值说明spark.sql.parquet.adaptiveFileSplittrue不知道spark.sql....

  • 测试用例模板设计需要了解的点

    测试用例是进行测试的最小单元粒度。在编写测试用例之前需要很多准备工作去分析需求,提取测试点,然后根据提取的测...

  • 原创-spark sql 写入hive较慢优化思路

    在《spark sql 写入hive较慢原因分析》中已经分析了spark sql 写入hive分区文件慢的原因,笔...

  • 测试用例总结

    昨晚的分享,主要是关于测试用例的。在分享中提到了测试用例设计方法:等价类划分、边界值分析法、因果图法、基本路径分析...

网友评论

    本文标题:Spark Sql 对 null 值多组测试用例分析

    本文链接:https://www.haomeiwen.com/subject/wbdaqqtx.html