通过pyspark作业更新数据库表的最佳方法

问题描述 投票:0回答:2

我有一个火花作业,可以从多个来源获取数据并汇总到一个表中。仅当有新数据时,作业才应更新表。我可以想到的一种方法是从现有表中获取数据,然后与传入的新数据进行比较。比较发生在spark层中。我想知道是否有更好的比较方法可以改善比较性能。

[如果有人对此有任何建议,请告诉我。

非常感谢。

dataframe apache-spark pyspark google-bigquery bigdata
2个回答
0
投票

您应该在数据库中没有上次更新时间吗?您使用的方法听起来不具有可扩展性,因此,如果您有办法为表中的每一行设置更新时间,它将解决此问题。


0
投票

我可以想到的一种方法是从现有的方法中获取数据表,并与其中的新数据进行比较

恕我直言,这是错误的。

相反,您可以创建大查询分区表并创建一个分区列以加载数据,并且在加载新数据时,您可以检查新数据是否具有相同的分区列。在hive或bigquery中命中分区级别的数据比选择整个数据并进行火花比较更为有用/有效。

同样适用于配置单元。

请参阅此Creating partitioned tables

© www.soinside.com 2019 - 2024. All rights reserved.