我有一个带有一列的火花数据集,这个列是一个Map [String,Any]。我想逐行映射数据集,然后映射到Map列,逐个键,操纵每个键的值,并生成与前一个新数据类型相同的新数据集。
例如:
case class Data(column: Map[String, Any])
val ds: Dataset[Data] = Seq(Data(Map(("name","Andy"),("address","Street Name 1"))),Data(Map(("name","John"),("city","NYC")))).toDS()
我想在每个值的末尾添加“+”,因此结果将是Data类型的数据集,如下所示:
name -> Andy +, address -> Street Name 1 +
name -> John +, city -> NYC +
感谢 尼尔
答案 0 :(得分:2)
val result =
ds.map(data =>
Data(data.column.map { case (key, value) => (key -> s"$value +") }
)
或
val result =
ds.map(
data => data.copy(column = data.column.map { case (key, value) => (key -> s"$value +") }
)