【发布时间】:2017-10-20 08:20:58
【问题描述】:
作为 scala 中的示例,我有一个列表,并且每个项目都匹配我想要出现两次的条件(可能不是这个用例的最佳选择 - 但想法很重要):
l.flatMap {
case n if n % 2 == 0 => List(n, n)
case n => List(n)
}
我想在 Spark 中做类似的事情 - 迭代 DataFrame 中的行,如果一行匹配某个条件,那么我需要复制该行并在副本中进行一些修改。如何做到这一点?
例如,如果我的输入是下表:
| name | age |
|-------|-----|
| Peter | 50 |
| Paul | 60 |
| Mary | 70 |
我想遍历表并针对多个条件测试每一行,并且对于每个匹配的条件,应该使用匹配条件的名称创建一个条目。
例如条件 #1 是“年龄 > 60”,条件 #2 是“name.length
| name | age |condition|
|-------|-----|---------|
| Paul | 60 | 2 |
| Mary | 70 | 1 |
| Mary | 70 | 2 |
【问题讨论】:
-
您应该也可以使用
flatMap来做到这一点。你能展示一些实际数据吗? -
添加示例以使其更清晰
-
您想在
name.length > 4处删除行吗,如果age > 60和name.length > 4怎么办?您还需要 condition 列吗? -
对于行匹配的每个条件,结果表中都应该有一个条目。如果没有匹配,则没有条目,多个匹配意味着多个条目
标签: scala apache-spark dataframe