我有以下DataFrame:
|-----id-------|----value------|-----desc------| | 1 | v1 | d1 | | 1 | v2 | d2 | | 2 | v21 | d21 | | 2 | v22 | d22 | |--------------|---------------|---------------|
我想把它变成:
|-----id-------|----value------|-----desc------| | 1 | v1;v2 | d1;d2 | | 2 | v21;v22 | d21;d22 | |--------------|---------------|---------------|
是否可以通过数据框操作?
在这种情况下,rdd转换会如何?
我认为rdd.reduce是关键,但我不知道如何使它适应这种情况.
您可以使用spark sql转换数据
case class Test(id: Int, value: String, desc: String) val data = sc.parallelize(Seq((1, "v1", "d1"), (1, "v2", "d2"), (2, "v21", "d21"), (2, "v22", "d22"))) .map(line => Test(line._1, line._2, line._3)) .df data.registerTempTable("data") val result = sqlContext.sql("select id,concat_ws(';', collect_list(value)),concat_ws(';', collect_list(value)) from data group by id") result.show