Spark2-对于Null/Nan的处理
在Scala中,Double类型的空值保存为NaN,其他保存为null。对于Double可以直接使用:bianliang.isNaN判断其是否是空值,那么在一个多行多列的DataSet或者DataFrame中怎么进行处理呢。
一、几种查找空值的方法
1、Column方法
column.isNull/column.isNotNull/column.isNaN
- df("col1").isNull
- df.filter(df("col1").isNull)就可以获取所有col1列为空值的行了。
- //获取col1字段所有空列
- df.filter(df("col1").isNull).count()
- df.filter(df("col1").isNotNull).count()
2、类sql方法
- //获取col1字段所有空列
- data1.filter("col1 is null").select("col1").limit(10).show
- //获取col1字段的所有非空列
- data1.filter("col1 is not null").select("col1").limit(10).show
- data1.filter("col1 <>''").select("col1").limit(10).show
二、na方法
- val naDF:DataFrameNaFunctions=df.na
调用na方法会返回一个DataFrameNaFunctions。其只有3个方法,drop、fill、replace。
2.1 na.drop方法
2.1.1 删除所有列的空值以及NaN
- val resNull=df.na.drop()
返回一个新DF,剔除了包含空值的行。
2.1.2 删除某一列的空值和NaN
- val res =df.na.drop(Array("col1","col2"))
2.1.3 删除某一列的非空非NaN但是值低于10的。
- df.na.drop(10,Array("col1","col2"))
2.2 na.fill方法
2.2.1 填充所有空值的列
- val res123=df.na.fill("新值")
- val res123=df.na.fill(10)
2.2.2 对指定的空值进行填充
传入一个值,以及所有需要用此值填充的Array,或者使用Map,按照列进行不同填充。
- val res2=data1.na.fill(value="wangxiao111",cols=Array("gender","yearsmarried") )
- val res3=data1.na.fill(Map("gender"->"wangxiao222","yearsmarried"->"wangxiao567") )
2.3 na.replace方法
2.3.1 将指定列的指定值替换为对应的值
- df.na.replace("col1",Map(1->2)) //将col1列的值为1替换为2.
- df.na.replace(Array("col1","col2"),Map(1->2))
- df.na.replace[Int]("col1",Map(1->2))//可以添加泛型,Map中的key和value类型必须与其保持一致。
Spark2-对于Null/Nan的处理的更多相关文章
- js判断undefined类型,undefined,null,NaN的区别
js判断undefined类型 今天使用showModalDialog打开页面,返回值时.当打开的页面点击关闭按钮或直接点浏览器上的关闭则返回值是undefined 所以自作聪明判断 ...
- Javascript 中的非空判断 undefined,null, NaN的区别
JS 数据类型 在介绍这三个之间的差别之前, 先来看一下JS 的数据类型. 在 Java ,C这样的语言中, 使用一个变量之前,需要先定义这个变量并指定它的数据类型,是整型,字符串型,.... 但是 ...
- (转载)Javascript 中的非空判断 undefined,null, NaN的区别
原文地址:https://blog.csdn.net/oscar999/article/details/9353713 在介绍这三个之间的差别之前, 先来看一下JS 的数据类型. 在 Java ,C ...
- Spark Dataset DataFrame空值null,NaN判断和处理
Spark Dataset DataFrame空值null,NaN判断和处理 import org.apache.spark.sql.SparkSession import org.apache.sp ...
- Spark2 Dataset DataFrame空值null,NaN判断和处理
import org.apache.spark.sql.SparkSession import org.apache.spark.sql.Dataset import org.apache.spark ...
- JavaScript 中undefined,null,NaN的区别
1.类型分析: js中的数据类型有undefined,boolean,number,string,object等5种,前4种为原始类型,第5种为引用类型.var a1;var a2 = true;va ...
- js中undefined,null,NaN的区别
1.类型分析: js中的数据类型有undefined,boolean,number,string,object等5种,前4种为原始类型,第5种为引用类型.var a1;var a2 = true;va ...
- R语言中的特殊值 NA NULL NaN Inf
这几个都是R语言中的特殊值,都是R的保留字, NA:Not available 表示缺失值 用 is.na() 来判断是否为缺失值 NULL:表示空值,即没有内容 用 is.null() 来判 ...
- Objective-C之null NaN undefined
http://blog.csdn.net/siemenliu/article/details/6568306
随机推荐
- 【转载】python 特殊函数 dunder function
python的特殊方法:另外一种称谓是 dunder function, 就是 under-under function的简写,就是指那些前后都带双下划线的函数. 转自这里: https://blog ...
- Centos6.9下安装OpenOffice 4.1.4
# 对一下时间,时间不准,解压不了yum install -y ntp unzipntpdate -u 202.112.10.36yum install libXext.x86_64 -yyum gr ...
- 182. Duplicate Emails
Write a SQL query to find all duplicate emails in a table named Person. +----+---------+ | Id | Emai ...
- 亲测能用的mysqli类,挺好用的
<?php header('content-type:text/html;charset=utf-8'); /* 掌握满足单例模式的必要条件 (1)私有的构造方法-为了防止在类外使用new关键字 ...
- AC日记——[SDOI2017]相关分析 洛谷 P3707
[SDOI2017]相关分析 思路: 裸线段树: (玄学ac): 代码: #include <bits/stdc++.h> using namespace std; #define max ...
- slice切割数组arr=[[0,1],[2,3]]
for (var i = 0; i < 10; i++) { arr.push(i) } function arrSlice(arr, num) { var arr1 = []; for (va ...
- 51nod 1201 (dp)
整数划分 将N分为若干个不同整数的和,有多少种不同的划分方式,例如:n = 6,{6} {1,5} {2,4} {1,2,3},共4种.由于数据较大,输出Mod 10^9 + 7的结果即可. In ...
- HZAU 1205 Sequence Number(双指针)
题目链接:http://acm.hzau.edu.cn/problem.php?id=1205 [题意]给你一串数,要求你找到两个数a[i],a[j],使得a[i]<=a[j]且j>=i且 ...
- CentOS中Ctrl+Z、Ctrl+C、Ctrl+D的区别
Ctrl+C和Ctrl+Z都是中断命令,但作用不同. Ctrl+C是发送SIGINT信号,终止一个进程. Ctrl+Z是发送SIGSTOP信号,挂起一个进程,将作业放置到后台(暂停状态).与此同时,可 ...
- Visual Studio 2017创建XAML文件
Visual Studio 2017创建XAML文件 在Visual Stuido 2015中,在已经创建好的项目中添加XAML文件,只要右击项目,单击“添加”|“新建项”命令,然后从“添加新项” ...