是否可以给varchar数据类型的partitionColumn?我要读取的表没有主键,并且所有列都是varchar数据类型。有什么方法可以将partitionColumn作为varchar类型从jdbc读取?
var finaldataframe = spark.read.format("jdbc")
.option("driver", "com.microsoft.sqlserver.jdbc.SQLServerDriver")
.option("database",db)
.option("url", url)
.option("dbtable", table_name)
.option("numPartitions", partitions)
.option("partitionColumn", pm_key)
.option("lowerbound", w_minLogID)
.option("upperbound", w_maxLogID)
.load()
火花文档https://spark.apache.org/docs/latest/sql-data-sources-jdbc.html表示:
partitionColumn必须是有关表中的数字,日期或时间戳列。
但是有一些解决方法吗?
即使类型为varchar,数值也可能是数字,您可以应用转换函数将其转换为数字。
分区列不能为非数值,因为Spark会对行进行计数,然后将行划分为多个范围,然后使用多个执行程序来下载不同范围的数据。