scala - 如何使用 flatmap 分解数据集?
问题描述
我有一个案例类的序列,它有一个字符串,后跟一个字符串序列。如何在不丢失第一列的情况下对字符串序列(第二列)进行平面映射?
我试过这个:
flatmap(_.second)
但在这种情况下,我丢失了第一列。
这是我的代码:
case class A(
first:String,
second:Seq[String]
)
val ds = Seq(
A("1", Seq("A","B")),
A("2", Seq("C"))
) toDS
解决方案
一种爆炸第二列并保留第一列的方法是有效的flatMap
:
ds.flatMap{ case A(a,b) => b.map((a,_)) }
应该输出:
+---+---+
| _1| _2|
+---+---+
| 1| A|
| 1| B|
| 2| C|
+---+---+
推荐阅读
- python - 将 nd-array 拆分为重叠的子 nd-array
- javascript - 模态内容“页面”并从按钮返回上一页
- javascript - 如何使页脚随内容移动(使其具有响应性)?
- php - 从路由返回了无效的 JSON,Laravel 8 单元测试
- ios - 如何强制 Xcode 在构建阶段运行运行脚本
- python - 错误:(-215:Assertion failed) size.width>0 && size.height>0 in function 'cv::imshow' while video streaming from Webcam
- c# - 如何在 WPF 中为文本框制作工具提示,使用 C# 而不是 XAML
- java - 是否存在具有“读取您的写入”保证和频繁更改数据的异步更新传播的嵌入式复制地图解决方案?
- python-3.x - 如何使用 Python 从 acoustID 获取曲目元数据
- gcc - VSCODE 的问题包括使用英特尔 IPP libarays