Apache spark Spark以块的形式读取数据库行?

Apache spark Spark以块的形式读取数据库行?,apache-spark,Apache Spark,我使用相当大的spark.read.jdbc方法查询数据库,并得到以下错误: com.mysql.cj.jdbc.exceptions.PacketTooBigException:用于查询的数据包太大(15913800>4194304) 这表示检索到的数据太大。 我没有改变数据库设置的选项,我需要能够检索所有数据,因此我希望以块的形式读取数据,并使结果成为数据帧。我怎样才能做到这一点 例如,在python中,我可以使用pandas查询数据库并将其分块读取如果您查看,您可以找到fetchsize选

我使用相当大的
spark.read.jdbc
方法查询数据库,并得到以下错误:

com.mysql.cj.jdbc.exceptions.PacketTooBigException:用于查询的数据包太大(15913800>4194304)

这表示检索到的数据太大。
我没有改变数据库设置的选项,我需要能够检索所有数据,因此我希望以块的形式读取数据,并使结果成为数据帧。我怎样才能做到这一点


例如,在python中,我可以使用pandas查询数据库并将其分块读取

如果您查看,您可以找到
fetchsize
选项,您可以将该选项传递给
spark.read.jdbc

虽然通常的方法是分区数,等等,@thebluephantom我认为这是为了指定并行性,而不是行。亚历克斯·奥特的答案看起来是正确的,但从抽象的角度来看,如果我读了这个问题,它也达到了同样的效果。不管怎样,如果表的大小一致,是的,如果我使用足够大的并行度,它就会。但是,如果表的大小在增长,那么在某个点上,我会达到相同的错误。因此,需要为我的用例使用
fetchsize
,因为我的目标表将继续运行grow@thebluephantom默认情况下,在指定
partitionColumn
lowerBound
upperBound
之前,读取时不会进行并行化。看看这个答案: