假设您使用spark访问一个SQL数据库。使用RDD火花将数据划分为多个不同的部分,这些部分共同构成数据集。
我的问题是Spark如何管理从N个节点到数据库的这种访问。我可以看到几种可能性:
JDBC包使用池连接来避免一次又一次的连接。但这并不能解决这个问题。
将有什么参考来解释spark如何管理对SQL数据库的这种访问?有多少可以被参数化?
发布于 2020-03-06 09:06:45
这在到其他数据库的JDBC数据源文档页面中有相当详细的记录。
简而言之,作业中涉及的每个节点都将建立到数据库的连接。然而,决定连接数量的不是节点计数,而是已配置的分区数:
numPartitions:表读取和写入中可用于并行处理的最大分区数。--这也决定了并发JDBC连接的最大数量。如果要写入的分区数超过此限制,则在编写之前调用numPartitions将其减少到此限制。
以及关于
JDBC包使用池连接来避免一次又一次的连接。但这并不能解决这个问题。
JDBC驱动程序不会隐式地池连接。应用程序设置、配置和使用连接池。除非Spark需要重复连接数据库以获取数据,否则它不需要在每个分区建立多个连接。所以就不需要连接了。
链接文档页有一个选项列表,应用程序可以使用这些选项来控制如何从数据库获取数据。
https://stackoverflow.com/questions/60560339
复制相似问题