Oracle Hadoop 连接器与 Sqoop

Posted

技术标签:

【中文标题】Oracle Hadoop 连接器与 Sqoop【英文标题】:Oracle Hadoop Connectors vs Sqoop 【发布时间】:2016-10-25 07:43:51 【问题描述】:

我使用 Sqoop 将数据从 Oracle 提取到 Hadoop,并且效果很好。在 Sqoop 上不使用分区的情况下,只需 4 分钟即可将 8600 万条记录从 Oracle 带到 Hive 表。谁能提供一些有关 Oracle Hadoop 连接器的详细信息,它的性能会比 Sqoop 更好吗?

【问题讨论】:

根据 Oracle 文档:Oracle Loader for Hadoop 是一个 MapReduce 程序,运行在 Hadoop 集群上,用于预处理数据。它可以对数据进行分区、排序和转换为 Oracle 数据类型,为加载做准备。这会将一些数据库周期卸载到 Hadoop 上,从而在加载过程中使用更少的数据库 CPU。在线模式下,将预处理后的数据直接加载到数据库中。在离线模式下,Oracle Loader for Hadoop 将预处理后的数据作为数据泵文件写入 HDFS。在线模式有两种加载方式,JDBC和直接路径。 【参考方案1】:

大多数连接器的性能与您在工作流的最后阶段拥有一组 MapReduce 作业的性能几乎相同,这将在您的整体性能中发挥主要作用。

Oracle 为访问 Hive 提供了一组不同的连接器,您可以查看有关标准解决方案的一个很好的概述,但我怀疑最终您是否会期望在 Sqoop 中看到显着的性能差异:

https://docs.oracle.com/cd/E37231_01/doc.20/e36961/start.htm#BDCUG119

Sqoop 是一个通用工具,用于处理来自 Hadoop 领域的关系数据库,它不仅受 Oracle 的限制。此外,它还与 Oozie 等其他 Hadoop 解决方案集成,用于制作复杂的工作流,这使其成为其他类型连接器的理想选择。

就我个人而言,我更喜欢 Sqoop 用于 Hadoop 驱动的导入导出操作和用于查询 Hadoop 中数据的连接器方法。

【讨论】:

【参考方案2】:

Sqoop 将利用标准 JDBC 连接。 Oracles 连接器将与集成到 sqoop 连接中的 fastloader/fastexport 类一起使用。应该比 Sqoop 快。

【讨论】:

以上是关于Oracle Hadoop 连接器与 Sqoop的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Spark 中使用 Hadoop 凭据提供程序连接到 Oracle 数据库?

sqoop用法之mysql与hive数据导入导出#yyds干货盘点#

CHD-5.3.6集群上sqoop安装

如何用sqoop查看oracle的表

sqoop连接MySQL导入hdfs报错

Sqoop oracle 连接问题