使用Sqoop導(dǎo)出數(shù)據(jù)_第1頁
使用Sqoop導(dǎo)出數(shù)據(jù)_第2頁
使用Sqoop導(dǎo)出數(shù)據(jù)_第3頁
使用Sqoop導(dǎo)出數(shù)據(jù)_第4頁
使用Sqoop導(dǎo)出數(shù)據(jù)_第5頁
已閱讀5頁,還剩13頁未讀, 繼續(xù)免費閱讀

付費下載

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

主講:朱佳目錄0102如何使用Sqoop導(dǎo)出數(shù)據(jù)Sqoopexport如何工作0302執(zhí)行批量導(dǎo)出04將數(shù)據(jù)從Hive導(dǎo)出到數(shù)據(jù)庫如何使用Sqoop導(dǎo)出數(shù)據(jù)1如何使用Sqoop導(dǎo)出數(shù)據(jù)我們使用一個簡單的例子來說明如何使用Sqoop將數(shù)據(jù)導(dǎo)出到MySQL數(shù)據(jù)庫表中:sqoop.export--connect"jdbc:mysq1:///sqoop\--usernamesqoop\--passwordsqoop--tabletestTable\--export-dir/user/alapati/testTable如何使用Sqoop導(dǎo)出數(shù)據(jù)■--direct:指定直接模式,以便更快地完成導(dǎo)出。大多數(shù)數(shù)據(jù)庫的直接模式導(dǎo)出比基于JDBC的導(dǎo)出更為有效?!?m,--num-mappers<n>:允許指定導(dǎo)出過程的mapper數(shù)。■--update-mode<mode>:指定在數(shù)據(jù)庫中找到具有不匹配鍵的新行時將如何執(zhí)行更新。<mode>的兩個值是updateonly和allowinsert,默認值是updateonly。如何使用Sqoop導(dǎo)出數(shù)據(jù)■--update-key<col-name>:用于標(biāo)識在更新模式下更新的記錄的列??梢蕴峁┮远禾柗指舻牧斜韥硪淮胃露鄠€列?!?-staging-table<staging-table-name>:在將數(shù)據(jù)插入目標(biāo)表之前暫存數(shù)據(jù)的暫存表的名稱。這樣可以確?!癮ll-or-nothing”"導(dǎo)出(要么全導(dǎo)出要么不導(dǎo)出)。導(dǎo)出整個數(shù)據(jù)成功后,導(dǎo)出數(shù)據(jù)將被從暫存表移動到目標(biāo)表。這避免了從目標(biāo)表部分導(dǎo)出和潛在的數(shù)據(jù)損壞。■--clear-staging-table:如果指定暫存表,那么在啟動Sqoop導(dǎo)出之前,該表必須存在。臨時表必須為空,可以指定--clear-staging-table選項,讓Sqooptruncate表,從而清理臨時表。Sqoopexport如何工作2Sqoopexport如何工作運行Sqoop導(dǎo)出作業(yè)時會發(fā)生什么?Sqoop將執(zhí)行以下操作:■驗證MySQL表的元數(shù)據(jù)?!鰣?zhí)行MapReduce作業(yè),從HDFS文件傳輸每個記錄中的數(shù)據(jù),并將其轉(zhuǎn)換為INSERT命令,然后將其附加到目標(biāo)表。請注意,Sqoop將數(shù)據(jù)附加到目標(biāo)表。通過使用export命令并指定--update-key參數(shù),可以讓Sqoop更新數(shù)據(jù)庫表中的目標(biāo)行。Sqoopexport如何工作當(dāng)啟動Sqoop導(dǎo)出作業(yè)時,將啟動多個map任務(wù)來執(zhí)行導(dǎo)出,如果其中一個或多個失敗,則最終將部分行導(dǎo)出到目標(biāo)表。如果重新運行導(dǎo)出,則可能會失敗,因為行已存在。為了避免這種情況,可以在導(dǎo)出時指定--staging-table參數(shù)。這樣,Sqoop首先將數(shù)據(jù)存儲到暫存表中,然后將其移動到目標(biāo)表。要確保臨時表為空,請在發(fā)出export命令時指定--clean-staging-table參數(shù)。執(zhí)行批量導(dǎo)出3執(zhí)行批量導(dǎo)出在默認情況下,Sqoop通過單獨的INSERT語句插入每行。如果要將數(shù)百萬行導(dǎo)出到數(shù)據(jù)庫,使用SQLINSERT命令導(dǎo)入會非常緩慢,因為它一次插入一行數(shù)據(jù)!可以以三種不同的方式更改此默認行為,使得Sqoop可以在導(dǎo)出期間一次插入多行:■啟用JDBC批處理模式?!鍪褂肐NSERT語句時指定要插入的記錄數(shù)。■指定每個事務(wù)插入的行數(shù)。執(zhí)行批量導(dǎo)出可以通過指定--batch參數(shù)在導(dǎo)出期間啟用JDBC批處理模式,如下所示:sqoopexport\--connectjdbc:mysql:///sqoop\--usernamesqoop\--passwordsqoop\--tablecustomers\--export-dircustomers\--batch執(zhí)行批量導(dǎo)出或者,可以通過sqoop.export.records.per.statement屬性來規(guī)定每個INSERT語句插入的記錄數(shù),如下所示,其中每個INSERT語句插入10個記錄sqoopexport\Dsqoop.export.records.per.statement=10\最后,還可以通過添加sqoop.export.statements.per.transaction屬性來指定每個事務(wù)插入的行數(shù),如下所示:sqoopexportDsqoop.export.statements.per.transaction=10\將數(shù)據(jù)從Hive導(dǎo)出到數(shù)據(jù)庫4將數(shù)據(jù)從Hive導(dǎo)出到數(shù)據(jù)庫不能真正使用Sqoop(或Sqoop2)將數(shù)據(jù)從Hive表直接導(dǎo)出到數(shù)據(jù)庫表中。但是,可以通過從Hive存儲其表數(shù)據(jù)的HDFS目錄導(dǎo)出數(shù)據(jù)來執(zhí)行此操作。可以以文本或Avro文件的形式提取數(shù)據(jù)。以下示例顯示了如何將數(shù)據(jù)從名為testTable的Hive表導(dǎo)出到MySQL表中。將數(shù)據(jù)從Hive導(dǎo)出到數(shù)據(jù)庫$bin/sqoopexport--connectjdbc:mysql://localhost/test_db--tableinvoice--export-dir/user/hive/warehouse/invoice--usernameroot--passwordpassword--m12--input-fields-terminated-by'001'將數(shù)據(jù)從Hive導(dǎo)出到數(shù)據(jù)庫在此導(dǎo)出命令中,指定了Hive倉庫的路徑,其中存儲了名為invoice的表。還指定'001'作為字段分隔符(Hive還允許其他類型的分隔符)。此導(dǎo)出命令將Hive表invoice加載到MySQL表中

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論