spark jdbc read api:为datetime类型的列动态确定分区数

4szc88ey  于 2021-07-14  发布在  Spark
关注(0)|答案(0)|浏览(231)

我正在尝试使用pyspark从rds mysql示例读取一个表。这是一个巨大的表,因此我想通过使用分区概念来并行化读取操作。该表没有用于查找分区数的数字列。相反,它有一个timestamp列(即datetime类型)。
我通过检索timestamp列的min和max值找到了上下限。但是,我不确定是否有一个标准的公式来动态计算分区的数量。下面是我目前正在做的(对numpartitions参数的值进行硬编码):

select_sql = "SELECT {} FROM {}".format(columns, table)
partition_info = {'partition_column': 'col1', 
                  'lower_bound': '<result of min(col1)>', 
                  'upper_bound': '<result of max(col1)>', 
                  'num_partitions': '10'}
read_df = spark.read.format("jdbc") \
        .option("driver", driver) \
        .option("url", url) \
        .option("dbtable", select_sql) \
        .option("user", user) \
        .option("password", password) \
        .option("useSSL", False) \
        .option("partitionColumn", partition_info['partition_column']) \
        .option("lowerBound", partition_info['lower_bound'])) \
        .option("upperBound", partition_info['upper_bound'])) \
        .option("numPartitions", partition_info['num_partitions']) \
        .load()

请给我建议一个有效的解决方案/方法。谢谢

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题