Spark SQL 从数据源动态获取最大值和最小值



我正在使用Spark SQL,我想每天从Oracle表中获取整个数据(由超过1800k条记录组成)。当我从Oracle阅读时,应用程序正在挂起,因此我使用了partitionColumn,lowerBound和upperBound的概念。但是,问题是我如何动态获取主键列的 l owerBound 和 upperBound 值?下限和上限的每日值都会发生变化。因此,如何动态获取主键列的边界值?谁能指导我一个我的问题的示例示例?

只需从数据库中获取所需的值:

url = ...
properties = ...
partition_column = ...
table = ...
# Push aggregation to the database
query = "(SELECT min({0}), max({0}) FROM {1}) AS tmp".format(
    partition_column, table
)
(lower_bound, upper_bound) = (spark.read
    .jdbc(url=url, table=query. properties=properties)
    .first())

并传递给主查询:

num_partitions = ...
spark.read.jdbc(
    url, table, 
    column=partition_column, 
    # Make upper bound inclusive 
    lowerBound=lower_bound, upperBound=upper_bound + 1, 
    numPartitions=num_partitions, properties=properties
)

相关内容

  • 没有找到相关文章

最新更新