如何在Spark Dataframe中替换特定列的多个值?

时间:2017-03-22 05:19:33

标签: scala apache-spark apache-spark-sql

我正在尝试替换或更新数据帧中的某些特定列值,因为我们知道Dataframe是不可变的,我正在尝试转换为新的数据帧而不是更新或替换。

我按照Spark文档中的说明尝试了 dataframe.replace ,但是它给了我错误错误:值替换不是org.apache.spark.sql.DataFrame的成员

我试过下面的选项。为了传递多个值,我在数组中传递

val new_df= df.replace("Stringcolumn", Map(array("11","17","18","10"->"12")))

但我收到错误

错误:使用备选方法重载方法值数组

非常感谢帮助!!

1 个答案:

答案 0 :(得分:1)

要访问 org.apache.spark.sql.DataFrameNaFunctions ,例如替换,您必须致电.na。所以你的代码看起来应该是这样的,

import com.google.common.collect.ImmutableMap

df.na.replace("Stringcolumn", Map(10 -> 12, 11 -> 17))

请参阅here以获取DataFrameNaFunctions的所有列表以及如何使用它们