2016-08-25 50 views
3

根據我的理解,sqoop用於將數據庫中的表/數據導入或導出到HDFS或Hive或HBASE。什麼是sqoop中的直接模式?

而且我們可以直接導入一張表或一張表的列表。內部mapreduce程序(我認爲只有地圖任務)將運行。

我的疑問是什麼是sqoop直接和什麼時候與sqoop直接選項?

回答

0

--direct - 使用直接進口快速路徑

By supplying the --direct argument,你指定Sqoop應該嘗試直接進口渠道。該通道可能比使用JDBC更高的性能。

對於MySQL:

MySQL的直接連接器允許更快的導入和導出/從MySQL使用mysqldumpmysqlimport工具的功能,而不是SQL選擇和插入。與每個特定的RDBMS,安裝要求,可用選項和限制使用的直接模式

詳情可 Section 25, 「Notes for specific connectors」.

4

找到剛纔看了Sqoop文檔!

有些數據庫可以通過使用特定於數據庫的數據遷移工具更高性能的時尚 執行進口( ...)


部分數據庫提供了直接模式 出口以及 (...)有關使用與每一個具體的RDBMS,安裝要求,可用選項和限制直接模式

詳細信息可以在第25

底線:「直接模式」意思是針對不同數據庫的不同事物
對於MySQL或PostgreSQL,它涉及批量加載器/卸載器實用程序(即完全繞過JDBC);而對於Oracle而言,它涉及到「直接路徑INSERT」,即與JDBC相關,但是處於非事務性模式(因此,您最好使用臨時表,否則最終可能會在PK和損壞的表中出現重複項)

1

爲了簡潔和準確,它的快速導入模式不運行任何映射器或縮減器。

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

注:

  1. --direct只在MySQL和PostgreSQL的支持。
  2. Sqoop的直接模式不支持進口BLOB,CLOBLONGVARBINARY列。
+2

注1不正確。直接模式也支持Netezza Connectorfor v1.4.4 +。 [文檔參考](https://sqoop.apache.org/docs/1.4.4/SqoopUserGuide.html#_direct_mode) – kasur