mrb*_*chi 1 scala apache-spark apache-spark-sql
我必须将列列表映射到Spark数据集中的另一列:这样思考
val translationMap: Map[Column, Column] = Map(
lit("foo") -> lit("bar"),
lit("baz") -> lit("bab")
)
Run Code Online (Sandbox Code Playgroud)
我有一个像这样的数据框:
val df = Seq("foo", "baz").toDF("mov")
Run Code Online (Sandbox Code Playgroud)
所以我打算像这样执行翻译:
df.select(
col("mov"),
translationMap(col("mov"))
)
Run Code Online (Sandbox Code Playgroud)
但是这段代码会吐出以下错误
key not found: movs
java.util.NoSuchElementException: key not found: movs
Run Code Online (Sandbox Code Playgroud)
有没有一种方法可以在不连接数百个whens的情况下执行此类转换?认为translationMap可能会有很多对键值。
而不是Map[Column, Column]您应该使用Column包含地图文字的:
import org.apache.spark.sql.functions.typedLit
val translationMap: Column = typedLit(Map(
"foo" -> "bar",
"baz" -> "bab"
))
Run Code Online (Sandbox Code Playgroud)
您的其余代码可以保持原样:
df.select(
col("mov"),
translationMap(col("mov"))
).show
Run Code Online (Sandbox Code Playgroud)
import org.apache.spark.sql.functions.typedLit
val translationMap: Column = typedLit(Map(
"foo" -> "bar",
"baz" -> "bab"
))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
553 次 |
| 最近记录: |