在spark中使用一个表来更新另一个表



我有两个表或dataframes,我想使用一个来更新另一个。我也知道spark sql不支持update a set a.1= b.1 from b where a.2 = b.2 and a.update < b.update。请建议我如何才能实现这一点,因为这是不可能的火花。

table1

+------+----+------+
|number|name|update|
+------+--- -------+
|     1|   a| 08-01|
|     2|   b| 08-02|
+------+----+------+

    +------+----+------+
    |number|name|update|
    +------+--- -------+
    |     1|  a2| 08-03|
    |     3|   b| 08-02|
    +------+----+------+

我想要得到这个:

    +------+----+------+
    |number|name|update|
    +------+--- -------+
    |     1|  a2| 08-03|
    |     2|   b| 08-02|
    |     3|   b| 08-02|
    +------+----+------+

在spark中是否有其他的方法来做到这一点?

使用pyspark,您可以使用subtract()来查找table2中不存在的table1number值,然后使用unionAll中的两个表,其中table1被过滤到table2中缺失的观测值。

diff = (table1.select('number')
        .subtract(table2.select('number'))
        .rdd.map(lambda x: x[0]).collect())
table2.unionAll(table1[table1.number.isin(diff)]).orderBy('number').show()
+------+----+------+
|number|name|update|
+------+----+------+
|     1|  a2| 08-03|
|     2|   b| 08-02|
|     3|   b| 08-02|
+------+----+------+

相关内容

  • 没有找到相关文章

最新更新