问题:
spark
.read
.option("fetchsize" , fetchsize)
.option( "partitionColumnoption" , partitionColumnoption)
.option( "lowerBound" , where条件的最小值 )
.option( “upperBound” , where条件的最大值 ).
.option( “numPartitions” , numPartitions)
.jdbc(mysql_url, mysql_tablename, prop)
.where( “条件”)
toDF()
假如 读取的表 user 表,有 1 亿数据。
where operatetime > '2023-01-01' and operatetime) < '2023-01-31' 这么一个条件,符合这个条件的有100W数据
问题:
如果 operatetime 字段是 date类型的,spark.read 还是会扫描全表。
如果 operatetime 字段是 String类型的,spark.read 只会扫描符合条件的100W数据。
这样问题就出来了,operatetime 这个字段是date类型的话,扫描全表会导致 数据倾斜,因为我的分区字段配置的上下限已经做过where条件的判断了。
求教各位大佬,这个问题怎么处理?