我必须将列列表映射到 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
包含地图文字:
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|
+---+---------------------------------------+
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)