Spark数据框插入值如果不存在

时间:2018-03-24 10:37:42

标签: apache-spark dataframe apache-spark-sql

假设我有这样的数据框:

enter image description here

但有时会丢失一些行我需要删除缺少的行然后插入这样的行。所有值都是已知的 什么是在Spark中使用它的最佳方法(更喜欢在python中)

1 个答案:

答案 0 :(得分:1)

如果我理解正确,那么“缺失”值将由跳过的foo表示。在这种情况下,您正在寻找的是外连接。

假设您有两个数据框。您原来的,称之为df

+---+-----+
|foo|value|
+---+-----+
|  a|    1|
|  b|    2|
+---+-----+

使用您已知值的那个,称之为defaults

+---+------+
|foo|value2|
+---+------+
|  c|     3|
|  b|     3|
+---+------+

外部联接为您提供以下内容:

>>> jd = df.join(defaults, on="foo", how='outer')
>>> jd.show()
+---+-----+------+
|foo|value|value2|
+---+-----+------+
|  c| null|     3|
|  b|    2|     3|
|  a|    1|  null|
+---+-----+------+

我们现在只需合并两个值列,如果已定义value,则先将其>>> jd = jd.withColumn("result", coalesce("value", "value2")) >>> jd.show() +---+-----+------+------+ |foo|value|value2|result| +---+-----+------+------+ | c| null| 3| 3| | b| 2| 3| 2| | a| 1| null| 1| +---+-----+------+------+

export const Routing = () => (
    <Switch>
        <Route exact path='/' component={**Layout**}/>
        <Route path='/stats' component={Statistic}/>
        <Route path='/resource' component={Resource}/>
        <Route component={Notfound} />
    </Switch>
)