将具有单列的DataSet转换为scala中的多列数据集

时间:2016-12-07 03:06:35

标签: apache-spark dataset

我有一个数据集,它是String的DataSet,它有数据

12348,5,233,234559,4
12348,5,233,234559,4
12349,6,233,234560,5
12350,7,233,234561,6

我想拆分这一行并将其转换为多个列,分别是RegionId,PerilId,Date,EventId,ModelId。我如何实现这一目标?

2 个答案:

答案 0 :(得分:1)

你的意思是:

case class NewSet(RegionId: String, PerilId: String, Date: String, EventId: String, ModelId: String)
val newDataset = oldDataset.map(s:String => {
              val strings = s.split(",")
              NewSet(strings(0), strings(1), strings(2), string(3), strings(4)) })

当然你应该让lambda函数更加健壮......

答案 1 :(得分:0)

如果您拥有在RDD中指定的数据,那么将其转换为数据帧非常容易。

 case class MyClass(RegionId: String, PerilId: String, Date: String,
 EventId: String, ModelId: String)

 val dataframe = sqlContext.createDataFrame(rdd,classOf[MyClass])

此数据框将包含列名称的所有列对应于clas MyClass的变量。