我想在Apache Spark连接中包含空值.Spark默认情况下不包含null的行.
这是默认的Spark行为.
val numbersDf = Seq(
("123"),
("456"),
(null),
("")
).toDF("numbers")
val lettersDf = Seq(
("123", "abc"),
("456", "def"),
(null, "zzz"),
("", "hhh")
).toDF("numbers", "letters")
val joinedDf = numbersDf.join(lettersDf, Seq("numbers"))
Run Code Online (Sandbox Code Playgroud)
这是输出joinedDf.show():
+-------+-------+
|numbers|letters|
+-------+-------+
| 123| abc|
| 456| def|
| | hhh|
+-------+-------+
Run Code Online (Sandbox Code Playgroud)
这是我想要的输出:
+-------+-------+
|numbers|letters|
+-------+-------+
| 123| abc|
| 456| def|
| | hhh|
| null| zzz|
+-------+-------+
Run Code Online (Sandbox Code Playgroud) Spark 2.4引入了新的有用的涉及数组的Spark SQL函数,但是当我发现:select array_remove(array(1, 2, 3, null, 3), null)is null和not 的结果时,我有点困惑
[1, 2, 3, 3].
这是预期的行为吗?是否可以使用删除空值array_remove?
附带说明一下,目前我正在使用的替代方法是databricks中的高阶函数:
select filter(array(1, 2, 3, null, 3), x -> x is not null)