2017-07-11 10 views
1

私は1列でスパークするデータセットを持っています。この列はMap [String、Any]です。私はデータセットを行ごとにマップし、Mapカラム、キーのキー、各キーの値を操作し、前と同じタイプの新しいデータセットを新しいデータで生成します。例えばspark/scalaでマップを保持するデータセットをマップする方法

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() 

そして、私は次のように結果は、タイプデータのデータセットになりますので、それぞれの値の末尾に「+」を追加します:

name -> Andy +, address -> Street Name 1 + 
name -> John +, city -> NYC + 

おかげ ニール

+1

「Any Any Encoder for Any」が表示されていませんか? –

答えて

1
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 +") } 
) 
関連する問題