繁体   English   中英

Spark:使用Scala将CSV文件读入类似结构的地图中

[英]Spark: Read a csv file into a map like structure using scala

我有一个格式的csv文件:

key, age, marks, feature_n
abc, 23, 84, 85.3
xyz, 25, 67, 70.2

这里的功能数量可以变化。 在例如:我有3个特征(年龄,标记和feature_n)。 我必须将其转换为Map [String,String]如下:

[key,value]
["abc","age:23,marks:84,feature_n:85.3"]
["xyz","age:25,marks:67,feature_n:70.2"]

我必须将上述数据与列“键”上的另一个数据集A结合起来,并将“值”附加到数据集A的另一列上。CSV文件可以加载到具有模式的数据框中(模式由CSV文件的第一行定义)。

val newRecords = sparkSession.read.option("header", "true").option("mode", "DROPMALFORMED").csv("/records.csv");

发布之后,我将数据集newRecords与数据集A结合在一起,并将“值”附加到数据集A的一列中。

如何遍历每一行的每一列(不包括“键”列)并从newRecords生成格式为“ age:23,marks:84,feature_n:85.3”的字符串?

我可以更改csv文件的格式,并在有帮助的情况下以JSON格式存储数据。

我对Scala和Spark很陌生。

我建议以下解决方案:

val updated:RDD[String]=newRecords.drop(newRecords.col("key")).rdd.map(el=>{val a=el.toSeq;val st= "age"+a.head+"marks:"+a(1)+" feature_n:"+a.tail; st})

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM