在下面的示例中,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
使用Spark 1.3.1
您可以使用^{} 方法:
另一方面,这种行为是可以从normal SQL query中得到的。因为
NULL
标记了“丢失的信息和不适用的信息”[1],所以询问某个值是否等于NULL
是没有意义的。它要么IS
要么IS NOT
丢失Scala API提供了特殊的空安全等式
<=>
运算符,因此可以执行以下操作:但如果你问我,这看起来不是个好主意。
1.Wikipedia, Null (SQL)
相关问题 更多 >
编程相关推荐