【发布时间】:2017-03-26 20:36:39
【问题描述】:
我有一个格式为 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 的列之一。
如何遍历每一行的每一列,不包括列“key”并从 newRecords 生成格式为“age:23,marks:84,feature_n:85.3”的字符串?
如果有帮助,我可以更改 csv 文件的格式并将数据保存为 JSON 格式。
我对 Scala 和 Spark 还很陌生。
【问题讨论】:
-
这在我看来就像一个标准的地图/收集操作。你能澄清一下你在哪里遇到问题吗?
-
特征的数量可以是可变的。我试图通过将最后一个功能命名为 feature_n 来表示相同的意思。所以我需要迭代可变数量的列来生成最终的字符串。抱歉,问题中没有明确说明。
标签: scala csv apache-spark