如果我们在 sqoop 中使用 6 个 mapper 从 Oracle 导入数据,那么 sqoop 和 source 之间将建立多少个连接。
它是单个连接还是每个映射器有 6 个连接。
如果我们在 sqoop 中使用 6 个 mapper 从 Oracle 导入数据,那么 sqoop 和 source 之间将建立多少个连接。
它是单个连接还是每个映射器有 6 个连接。
根据 sqoop文档:
同样,不要将并行度提高到高于您的数据库可以合理支持的程度。将 100 个并发客户端连接到您的数据库可能会增加数据库服务器上的负载,从而导致性能受到影响。
这意味着所有映射器都将建立并发连接。
还要记住,如果您的表只有 2 条记录,那么 sqoop 将只使用 2 个映射器,而不是全部 6 个映射器。
检查我的其他答案以了解 Sqoop 命令中映射器数量的概念。
所有映射器将作为 JDBC 客户端程序进行非活动连接。然后活动连接(实际上触发 SQL 查询)将在多个映射器之间共享。
在模式下触发 SQOOP IMPORT 命令-verbose
,您将看到日志 -
DEBUG manager.OracleManager$ConnCache: Got cached connection for jdbc:oracle:thin:@192.xx.xx.xx:1521:orcl/dev
DEBUG manager.OracleManager$ConnCache: Caching released connection for jdbc:oracle:thin:@192.xx.xx.xx:1521:orcl/dev
检查getConnection和回收方法以获取更多详细信息。
这可能取决于经理,但我猜他们都可能创建一个。以 DirectPostgresSqlManager 为例。它通过 psql COPY TO STDOUT 为每个映射器创建一个连接 请查看 Sqoop Managers的管理器
每个地图任务都会获得一个数据库连接。所以在你的情况下 6 映射然后 6 连接。请访问 github/sqoop 看看它是如何实现的
-m 指定将作为作业的一部分运行的映射器任务的数量。所以更多数量的映射器然后更多数量的连接。