首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何激发SQL access数据库?

如何激发SQL access数据库?
EN

Stack Overflow用户
提问于 2020-03-06 08:42:28
回答 1查看 275关注 0票数 1

假设您使用spark访问一个SQL数据库。使用RDD火花将数据划分为多个不同的部分,这些部分共同构成数据集。

我的问题是Spark如何管理从N个节点到数据库的这种访问。我可以看到几种可能性:

  1. RDD的每个节点访问数据库并构建它们的部分。它的优点是节点不会被迫分配大量内存,但是数据库将不得不承受N个可能很大的连接。
  2. 单个节点访问数据,并根据需要将数据发送到其他N1节点。问题是,这个单一节点需要拥有所有的数据,这在许多情况下是行不通的。可能可以通过按块获取数据来缓解这种情况。

JDBC包使用池连接来避免一次又一次的连接。但这并不能解决这个问题。

将有什么参考来解释spark如何管理对SQL数据库的这种访问?有多少可以被参数化?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-03-06 09:06:45

这在到其他数据库的JDBC数据源文档页面中有相当详细的记录。

简而言之,作业中涉及的每个节点都将建立到数据库的连接。然而,决定连接数量的不是节点计数,而是已配置的分区数:

numPartitions:表读取和写入中可用于并行处理的最大分区数。--这也决定了并发JDBC连接的最大数量。如果要写入的分区数超过此限制,则在编写之前调用numPartitions将其减少到此限制。

以及关于

JDBC包使用池连接来避免一次又一次的连接。但这并不能解决这个问题。

JDBC驱动程序不会隐式地池连接。应用程序设置、配置和使用连接池。除非Spark需要重复连接数据库以获取数据,否则它不需要在每个分区建立多个连接。所以就不需要连接了。

链接文档页有一个选项列表,应用程序可以使用这些选项来控制如何从数据库获取数据。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60560339

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档