什么是sqoop中的--direct模式?

时间:2016-08-25 16:32:16

标签: hadoop hadoop2 sqoop sqoop2

根据我的理解,sqoop用于将数据库中的表/数据导入或导出到HDFS或Hive或HBASE。

我们可以直接导入单个表或表列表。内部mapreduce程序(我认为只有map任务)将运行。

我怀疑sqoop是直接的,什么时候使用sqoop直接选项?

5 个答案:

答案 0 :(得分:5)

请阅读Sqoop文档!

  • 一般原则位于here用于导入,there用于导出
  

某些数据库可以以更高性能的方式执行导入   通过使用特定于数据库的数据移动工具(...)   

<小时/>   某些数据库为导出提供了直接模式以及(...)

  有关使用直接模式与每个特定RDBMS,安装要求,可用选项和限制的详细信息,请参见第25节

底线:“直接模式”表示不同数据库的不同内容 对于MySQL或PostgreSQL,它涉及批量加载器/卸载器实用程序(即完全绕过JDBC);而对于Oracle而言,它涉及“直接路径INSERT”,即使用JDBC但处于非事务模式(因此您最好使用临时表,或者您可能最终在PK和损坏的表中使用重复项)

答案 1 :(得分:2)

简短而精确,它的快速导入模式不会运行任何映射器或缩减器。

sqoop import --connect jdbc:mysql://db.foo.com/corp --table EMPLOYEES --direct

注意:

  1. --direct仅在mysql和postgresql中受支持。
  2. Sqoop的直接模式不支持导入BLOBCLOBLONGVARBINARY列。

答案 2 :(得分:2)

来自Managing Big Data in Clusters and Cloud Storage

  

默认情况下,Sqoop使用JDBC连接到数据库。然而,   根据数据库的不同,可能会有更快的,特定于数据库的   可用的连接器,您可以使用--direct option来使用。

因此,当您要使用与默认数据库连接器不同的数据库连接器时,可以使用-direct 选项。

答案 3 :(得分:0)

--direct - 使用直接导入快速路径

By supplying the --direct argument,您指定Sqoop应尝试直接导入频道。此通道的性能可能高于使用JDBC。

对于MySQL:

MySQL Direct Connector允许使用mysqldumpmysqlimport工具功能,而不是SQL选择和插入,更快地导入和导出MySQL。

有关使用直接模式与每个特定RDBMS,安装要求,可用选项和限制的详细信息,请参阅 Section 25, “Notes for specific connectors”.

答案 4 :(得分:0)

您可以通过在sqoop

中提供--direct选项来提高效果

但是不要将它用于非优先级的作业,因为更多的直接使用会降低源/目标数据库

http://archive.cloudera.com/docs-backup/sqoop/_direct_mode_imports.html