根据我的理解,sqoop用于将数据库中的表/数据导入或导出到HDFS或Hive或HBASE。
我们可以直接导入单个表或表列表。内部mapreduce程序(我认为只有map任务)将运行。
我怀疑sqoop是直接的,什么时候使用sqoop直接选项?
答案 0 :(得分:5)
请阅读Sqoop文档!
某些数据库可以以更高性能的方式执行导入 通过使用特定于数据库的数据移动工具(...)
<小时/> 某些数据库为导出提供了直接模式以及(...)
有关使用直接模式与每个特定RDBMS,安装要求,可用选项和限制的详细信息,请参见第25节
底线:“直接模式”表示不同数据库的不同内容 对于MySQL或PostgreSQL,它涉及批量加载器/卸载器实用程序(即完全绕过JDBC);而对于Oracle而言,它涉及“直接路径INSERT”,即使用JDBC但处于非事务模式(因此您最好使用临时表,或者您可能最终在PK和损坏的表中使用重复项)
答案 1 :(得分:2)
简短而精确,它的快速导入模式不会运行任何映射器或缩减器。
sqoop import --connect jdbc:mysql://db.foo.com/corp --table EMPLOYEES --direct
注意:
--direct
仅在mysql和postgresql中受支持。BLOB
,CLOB
或LONGVARBINARY
列。答案 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允许使用mysqldump
和mysqlimport
工具功能,而不是SQL选择和插入,更快地导入和导出MySQL。
有关使用直接模式与每个特定RDBMS,安装要求,可用选项和限制的详细信息,请参阅 Section 25, “Notes for specific connectors”.
答案 4 :(得分:0)
您可以通过在sqoop
中提供--direct
选项来提高效果
但是不要将它用于非优先级的作业,因为更多的直接使用会降低源/目标数据库
http://archive.cloudera.com/docs-backup/sqoop/_direct_mode_imports.html