gpt4 book ai didi

scala - 在 Spark 中连接 Maptype 值时如何处理空值

转载 作者:行者123 更新时间:2023-12-05 05:58:57 26 4
gpt4 key购买 nike

我正在尝试使用 concat_map() 连接 Maptype 的两列。我的问题是,当我尝试连接一个 null 和一个 Map 时,当我期望获得非 Null Map 值时却得到了一个 null。

val DF_concatenated=    DF.select(col("_1"), map_concat(col("m2"),col("m3"))).show()

我正在尝试从这个 DataFrame DF 中获取:

+---+----------+----------------+
| _1| m2| m3|
+---+----------+----------------+
| 3|[c -> III]| null|
| 1| [a -> I]| [one -> un]|
| 4| null|[four -> quatre]|
| 2| [b -> II]| [two -> deux]|
+---+----------+----------------+

到此数据框 DF_concatenated:

+---+----------------------+
| _1| map_concat(m2, m3) |
+---+----------------------+
| 3| [c -> III] |
| 1| [a -> I, one -> un] |
| 4| [four -> quatre] |
| 2|[b -> II, two -> deux]|
+---+----------------------+

但我最终得到了这个输出:

+---+----------------------+
| _1| map_concat(m2, m3) |
+---+----------------------+
| 3| null |
| 1| [a -> I, one -> un] |
| 4| null |
| 2|[b -> II, two -> deux]|
+---+----------------------+

最佳答案

map_concat 的行为是,即使单个操作数为 null,它也返回 null。

如果您的列可以为 null,您可以使用 coalesce 将 null 替换为空映射。

DF.select(
col("_1"),
map_concat(
coalesce(col("m2"), map()),
coalesce(col("m3"), map())
).as("result")
).show()

关于scala - 在 Spark 中连接 Maptype 值时如何处理空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68316614/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com