在编写Dataframe时,有多少个连接从spark连接到数据库?

e0bqpujr  于 2021-05-18  发布在  Spark
关注(0)|答案(2)|浏览(488)

我不知道在下面的场景中,spark会与数据库建立多少连接:
假设我有一个spark程序,它只在一个有一个执行器的工作节点上运行,一个Dataframe中的分区数是10。我想把这个Dataframe写入teradata。由于并行级别是10,但执行器只有1,所以在保存数据时会有10个连接,还是只有1个连接?

gstyhher

gstyhher1#

这取决于您的spark->teradata解决方案。
一般来说,每个核心有一个连接。每个核心对自己的分区进行1乘1的迭代。
例如,如果您使用 .foreach 使用自定义解决方案,一行中一次将有一个连接。
如果你使用 foreachPartition 使用自定义解决方案,您将有一个多行连接。

olqngx59

olqngx592#

自spark 2.2以来 numPartitions 为jdbc数据源指定的参数还用于控制其写入行为(除了前面设置读取期间的并行级别的目的之外)。来自spark docs:
numpartitions公司
表读写中可用于并行的最大分区数。这也决定了并发jdbc连接的最大数量。如果要写入的分区数超过此限制,则在写入之前通过调用coalesce(numpartitions)将其减少到此限制。

相关问题