Akk*_*kki 4 apache-spark apache-spark-sql pyspark databricks
我正在使用 Spark SQL,我想每天从 Oracle 表中获取整个数据(包含超过 1800k 条记录)。当我从Oracle读取数据时,应用程序挂起,因此我使用了partitionColumn、lowerBound和upperBound的概念。但是,问题是如何动态获取主键列的下限和上限值?lowerBound和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())
Run Code Online (Sandbox Code Playgroud)
并传递到主查询:
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
)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1907 次 |
| 最近记录: |