小編給大家分享一下怎么將數(shù)據(jù)從Hadoop導(dǎo)出到關(guān)系型和NoSQL數(shù)據(jù)庫,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!
成都創(chuàng)新互聯(lián)是一家專業(yè)提供羅源企業(yè)網(wǎng)站建設(shè),專注與網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計、H5開發(fā)、小程序制作等業(yè)務(wù)。10年已為羅源眾多企業(yè)、政府機構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)站建設(shè)公司優(yōu)惠進行中。實踐:使用Sqoop將數(shù)據(jù)導(dǎo)出到MySQL
Hadoop擅長與大多數(shù)關(guān)系型數(shù)據(jù)庫打交道,因此將OLTP數(shù)據(jù)提取到HDFS,執(zhí)行一些分析,然后將其導(dǎo)出回數(shù)據(jù)庫是很常見的。
問題
希望將數(shù)據(jù)寫入關(guān)系數(shù)據(jù)庫,同時確保寫入是冪等的。
解決方案
此技術(shù)介紹了如何使用Sqoop將文本文件導(dǎo)出到關(guān)系數(shù)據(jù)庫,還介紹了如何配置Sqoop以使用具有自定義字段和記錄分隔符的文件。我們還將介紹冪等導(dǎo)出,以確保失敗的導(dǎo)出不會使數(shù)據(jù)庫處于不一致狀態(tài)。
討論
這種技術(shù)假設(shè)已經(jīng)安裝MySQL并創(chuàng)建模式。
Sqoop導(dǎo)出要求導(dǎo)出數(shù)據(jù)庫表已存在,Sqoop可以支持表中行的插入和更新。
將數(shù)據(jù)導(dǎo)出到數(shù)據(jù)庫共享
我們在導(dǎo)入部分檢查的許多參數(shù),不同之處在于export需要使用--export-dir參數(shù)來確定要導(dǎo)出的HDFS目錄,還將為導(dǎo)出創(chuàng)建另一個選項文件,以防止在命令行上不安全地提供密碼:
第一步是將數(shù)據(jù)從MySQL導(dǎo)出到HDFS,以確保有一個良好的起點,如以下命令所示:
Sqoop導(dǎo)入的結(jié)果是HDFS中有許多CSV文件,可以在以下代碼中看到:
對于從HDFS到MySQL的Sqoop導(dǎo)出,將指定目標表應(yīng)該是stocks_export并且應(yīng)該從HDFS庫目錄導(dǎo)出數(shù)據(jù):
默認情況下,Sqoop導(dǎo)出將對目標數(shù)據(jù)庫表執(zhí)行INSERT,可以使用--update-mode參數(shù)支持更新。值updateonly意味著如果沒有匹配的密鑰,更新將失敗。如果匹配的鍵不存在,則allowInsert的值將直接插入。用于執(zhí)行更新的表列名稱在--update-key參數(shù)中提供。
以下示例表明只應(yīng)使用主鍵嘗試更新:
輸入數(shù)據(jù)格式
可以使用多個選項覆蓋用于解析輸入數(shù)據(jù)的默認Sqoop設(shè)置,表5.7列出了這些選項。
表5.7 輸入數(shù)據(jù)的格式選項
冪等輸出
執(zhí)行輸出的Sqoop map任務(wù)使用多個事務(wù)進行數(shù)據(jù)庫寫入。如果Sqoop導(dǎo)出MapReduce作業(yè)失敗,則表可能包含部分寫入。對于冪等數(shù)據(jù)庫寫入,可以指示Sqoop執(zhí)行MapReduce寫入臨時表。成功完成作業(yè)后,臨時表將在單個事務(wù)中移動到目標表,該事務(wù)是冪等的,可以在圖5.19中看到事件順序。
圖5.19 Sqoop分段事件序列,有助于確保冪等輸出
在下面的示例中,臨時表是stocks_staging,還告訴Sqoop在MapReduce作業(yè)以--clear-staging-table參數(shù)啟動之前清除它:
直接輸出
在導(dǎo)入技術(shù)中使用快速連接器,這是使用mysqldump實用程序的優(yōu)化。Sqoop導(dǎo)出也支持使用mysqlimport工具的快速連接器。與mysqldump一樣,集群中的所有節(jié)點都需要安裝mysqlimport,并且在用于運行MapReduce任務(wù)的用戶路徑中可用。與導(dǎo)入一樣, - diand參數(shù)可以使用快速連接器:
使用mysqlimport進行冪等輸出
Sqoop不支持將快速連接器與臨時表結(jié)合使用,這就是使用常規(guī)連接器實現(xiàn)冪等輸入的方法。但是仍然可以通過快速連接器實現(xiàn)冪等輸入,并在最后進行一些額外的工作。需要使用快速連接器寫入臨時表,然后觸發(fā)INSERT語句,該語句將數(shù)據(jù)原子復(fù)制到目標表中,步驟如下所示:
這打破了關(guān)于在命令行上公開憑證的早期規(guī)則,但是編寫可以從配置文件中讀取這些設(shè)置的腳本很容易。
看完了這篇文章,相信你對“怎么將數(shù)據(jù)從Hadoop導(dǎo)出到關(guān)系型和NoSQL數(shù)據(jù)庫”有了一定的了解,如果想了解更多相關(guān)知識,歡迎關(guān)注創(chuàng)新互聯(lián)-成都網(wǎng)站建設(shè)公司行業(yè)資訊頻道,感謝各位的閱讀!
當前標題:怎么將數(shù)據(jù)從Hadoop導(dǎo)出到關(guān)系型和NoSQL數(shù)據(jù)庫-創(chuàng)新互聯(lián)
文章起源:http://www.rwnh.cn/article22/ccigjc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站策劃、網(wǎng)頁設(shè)計公司、網(wǎng)站排名、網(wǎng)站維護、域名注冊、網(wǎng)站收錄
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容