您好,登錄后才能下訂單哦!
這篇文章主要講解了“sqoop export是什么”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“sqoop export是什么”吧!
一、Sqoop export簡介
Sqoop export工具被用來將文件集合從HDFS中導入到關系型數據庫中。目標表必須事先已經在數據庫中創建好。輸入文件根據用戶指定的分隔符被讀取解析成記錄集。Sqoop默認的是將這些操作轉換成“INSERT模式”,向目標數據庫中注入數據記錄。在“更新模式”中,Sqoop將會產生更新語句替換數據庫中已經存在的記錄。在“調用模式”中,Sqoop會為每個記錄產生一個存儲過程調用。
1、“INSERT模式”:Sqoop默認將每條記錄以轉換成INSERT語句,添加到數據庫表中,如果你的表存在一些約束如關鍵字唯一等,使用插入模式要當心,避免違反這些約束。如果一條記錄插入失敗那么,該導入job將會失敗。這種模式一般用于將數據導入到一個新的、空的表。Sqoop默認情況下使用INSERT 模式
2、“UPDATE模式”:如果指定--update-key參數,Sqoop將會修改一個數據庫中存在的數據集,每一條記錄都會當做UPDATE語句來修改存在的記錄。記錄的修改語句根據--update-key指定的列決定。如果一個更新語句在數據庫中沒有對應的記錄,則不會報錯,導出操作會繼續進行。事實上,這意味著不會在數據庫中導入新的記錄,只是更新原始數據。
二、參數介紹
--update-key 后面也可以接多個關鍵字列名,可以使用逗號隔開,Sqoop將會匹配多個關鍵字后再執行更新操作。
--export-dir 參數配合--table或者--call參數使用,指定了HDFS上需要將數據導入到MySQL中的文件集目錄。
--update-mode updateonly和allowinsert。 默認模式為updateonly,如果指定--update-mode模式為allowinsert,可以將目標數據庫中原來不存在的數據也導入到數據庫表中。即將存在的數據更新,不存在數據插入。
三、組合測試及說明
1、當指定update-key,且關系型數據庫表存在主鍵時:
A、allowinsert模式時,為更新目標數據庫表存的內容,并且原來不存在的數據也導入到數據庫表;
B、updateonly模式時,為更新目標數據庫表存的內容,并且原來不存在的數據也不導入到數據庫表;
2、當指定update-key,且關系型數據庫表不存在主鍵時:
A、allowinsert模式時,為全部數據追加導入到數據庫表;
B、updateonly模式時,為更新目標數據庫表存的內容,并且原來不存在的數據也不導入到數據庫表;
3、當不指定update-key,且關系型數據庫表存在主鍵時:
A、allowinsert模式時,報主鍵沖突,數據無變化;
B、updateonly模式時,報主鍵沖突,數據無變化;
4、當不指定update-key,且關系型數據庫表不存在主鍵時:
A、allowinsert模式時,為全部數據追加導入到數據庫表;
B、updateonly模式時,為全部數據追加導入到數據庫表。
感謝各位的閱讀,以上就是“sqoop export是什么”的內容了,經過本文的學習后,相信大家對sqoop export是什么這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。