lit-6ren">
gpt4 book ai didi

scala - 使用 Map 替换 Spark 中的列值

转载 作者:行者123 更新时间:2023-12-01 15:38:34 27 4
gpt4 key购买 nike

我必须将列列表映射到 Spark 数据集中的另一列:想想这样的事情

val translationMap: Map[Column, Column] = Map(
lit("foo") -> lit("bar"),
lit("baz") -> lit("bab")
)

我有一个这样的数据框:
val df = Seq("foo", "baz").toDF("mov")

所以我打算像这样进行翻译:
df.select(
col("mov"),
translationMap(col("mov"))
)

但是这段代码吐出以下错误
key not found: movs
java.util.NoSuchElementException: key not found: movs

有没有办法在不连接数百个 when 的情况下执行这种翻译?认为 translationMap可以有很多对键值。

最佳答案

而不是 Map[Column, Column]你应该使用 Column包含 map 文字:

import org.apache.spark.sql.functions.typedLit

val translationMap: Column = typedLit(Map(
"foo" -> "bar",
"baz" -> "bab"
))

其余代码可以保持原样:
df.select(
col("mov"),
translationMap(col("mov"))
).show

+---+---------------------------------------+
|mov|keys: [foo,baz], values: [bar,bab][mov]|
+---+---------------------------------------+
|foo| bar|
|baz| bab|
+---+---------------------------------------+

关于scala - 使用 Map 替换 Spark 中的列值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56557771/

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