如何映射包含spark / scala中的映射的数据集

时间:2017-07-11 11:53:37

标签: scala apache-spark

我有一个带有一列的火花数据集,这个列是一个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 +

感谢 尼尔

1 个答案:

答案 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 +") }
  )