0
我有一个数组,其中包含一个可包含整数值的arraytype列。如果没有值,它将只包含一个值,它将为空值检查arraytype列是否包含空值
重要:请注意,该列不会为空,而是具有单个值的数组;空
> val df: DataFrame = Seq(("foo", Seq(Some(2), Some(3))), ("bar", Seq(None))).toDF("k", "v")
df: org.apache.spark.sql.DataFrame = [k: string, v: array<int>]
> df.show()
+---+------+
| k| v|
+---+------+
|foo|[2, 3]|
|bar|[null]|
问题:我想获得具有空值的行。
感谢您的帮助
我迄今为止尝试:
> df.filter(array_contains(df("v"), 2)).show()
+---+------+
| k| v|
+---+------+
|foo|[2, 3]|
+---+------+
为空,它似乎并没有工作
> df.filter(array_contains(df("v"), null)).show()
org.apache.spark.sql.AnalysisException: cannot resolve 'array_contains(`v`, NULL)' due to data type mismatch: Null typed values cannot be used as arguments;
或
> df.filter(array_contains(df("v"), None)).show()
java.lang.RuntimeException: Unsupported literal type class scala.None$ None
什么'df.filter(array_contains(DF( “V”),NULL))显示()'? '“null”'是一个字符串。 –
这不会工作,因为显式检查为空。你会得到空类型的值不能用作参数 –