mar*_*oss 8 python apache-spark pyspark
在下面的示例中,df.a == 1谓词返回正确的结果,但df.a == None在返回1时返回0.
l = [[1], [1], [2], [2], [None]]
df = sc.parallelize(l).toDF(['a'])
df # DataFrame[a: bigint]
df.collect() # [Row(a=1), Row(a=1), Row(a=2), Row(a=2), Row(a=None)]
df.where(df.a == 1).count() # 2L
df.where(df.a == None).count() # 0L
Run Code Online (Sandbox Code Playgroud)
使用Spark 1.3.1
zer*_*323 19
你可以使用Column.isNull方法:
df.where(df.a.isNull()).count()
Run Code Online (Sandbox Code Playgroud)
另一方面,这种行为是人们对普通SQL查询的期望.由于NULL标记"缺少信息和不适用的信息" [1],因此询问某些内容是否相等是没有意义的NULL.它只是IS或者IS NOT缺失.
Scala API提供了特殊的null-safe等号<=>运算符,因此可以执行以下操作:
df.where($"a" <=> lit(null))
Run Code Online (Sandbox Code Playgroud)
但如果你问我,这看起来不是一个好主意.
| 归档时间: |
|
| 查看次数: |
15745 次 |
| 最近记录: |