Я не уверен в производительности, но попробуйте этот код ниже.это не выдаст ошибку
df = (spark.read.format("jdbc").option("url", url)
.option("dbtable", "mytable")
.option("user", user) .option("password", password)
.option("numPartitions", "100").option("fetchsize","10000")
.option("partitionColumn", "id")
.option("lowerBound", "1").option("upperBound","1000000").load())