2

如果我们在 sqoop 中使用 6 个 mapper 从 Oracle 导入数据,那么 sqoop 和 source 之间将建立多少个连接。

它是单个连接还是每个映射器有 6 个连接。

4

3 回答 3

2

根据 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回收方法以获取更多详细信息。

于 2016-07-13T20:25:08.927 回答
0

这可能取决于经理,但我猜他们都可能创建一个。以 DirectPostgresSqlManager 为例。它通过 psql COPY TO STDOUT 为每个映射器创建一个连接 请查看 Sqoop Managers的管理器

于 2016-08-31T20:14:25.530 回答
0

每个地图任务都会获得一个数据库连接。所以在你的情况下 6 映射然后 6 连接。请访问 github/sqoop 看看它是如何实现的

-m 指定将作为作业的一部分运行的映射器任务的数量。所以更多数量的映射器然后更多数量的连接。

于 2016-07-14T06:45:41.533 回答