scala - 使用 Scala、Spark 从输入中提取键值对
问题描述
给定文件中的输入为:
Maths,K1,A1,K2,A2,K3,A4
Physics,L6,M1,L5,M2,L9,M2
使用 Spark 和 Scala,如何将键值对提取为 RDD,如下所示:
Maths, K1
Maths, K2
Maths, K3
Physics, L6
Physics, L5
Physics, L9
解决方案
假设我们可以从您问题中的两个样本中安全地推断出预期结果,并假设输入是一系列字符串,这是实现它的一种方法:
val s = List("Maths,K1,A1,K2,A2,K3,A4","Physics,L6,M1,L5,M2,L9,M2")
val df = s.flatMap(x => {
val t = x.split(",")
(1 until t.size by 2).map(t.head -> t(_))
}).toDF("C1", "C2")
结果数据框:
+-------+---+
| C1| C2|
+-------+---+
| Maths| K1|
| Maths| K2|
| Maths| K3|
|Physics| L6|
|Physics| L5|
|Physics| L9|
+-------+---+
推荐阅读
- r - 如何使用带有'y'的绳索对图表重新排序作为简单的计数ggplot2?
- lua - 停止 Lua 中的所有计时器(Garry's Mod)
- java - org.springframework.boot.autoconfigure.jdbc.DataSourceProperties$DataSourceBeanCreationException:无法确定合适的驱动程序类
- node.js - 从函数范围返回值
- javascript - 数组中的 Javascript 输出元素作为数组使用函数进行拆分
- python-3.x - 如何根据运行时条件指定类型
- reactjs - 使用直接传递的功能道具反应离子导航
- apex - 使用 Salesforce Apex 更新给定列表及其子对象
- node.js - MongoDB Mongoose 按日期范围查询深度嵌套的子文档数组
- node.js - 如何包含 TypeScript Azure Function 的依赖项