亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

hbase 的數據 怎么導出到 一個文件或者mysql里面

hbase 的數據 怎么導出到 一個文件或者mysql里面

神不在的星期二 2018-10-02 13:13:31
查看完整描述

1 回答

?
智慧大石

TA貢獻1946條經驗 獲得超3個贊

將數據導入HBase中有如下幾種方式:
使用HBase的API中的Put方法
使用HBase 的bulk load 工具
使用定制的MapReduce Job方式

使用HBase的API中的Put是最直接的方法,用法也很容易學習。但針對大部分情況,它并非都是最高效的方式。當需要將海量數據在規定時間內載入HBase中時,效率問題體現得尤為明顯。待處理的數據量一般都是巨大的,這也許是為何我們選擇了HBase而不是其他數據庫的原因。在項目開始之前,你就該思考如何將所有能夠很好的將數據轉移進HBase,否則之后可能面臨嚴重的性能問題。
HBase有一個名為 bulk load的功能支持將海量數據高效地裝載入HBase中。Bulk load是通過一個MapReduce Job來實現的,通過Job直接生成一個HBase的內部HFile格式文件來形成一個特殊的HBase數據表,然后直接將數據文件加載到運行的集群中。使用bulk load功能最簡單的方式就是使用importtsv 工具。importtsv 是從TSV文件直接加載內容至HBase的一個內置工具。它通過運行一個MapReduce Job,將數據從TSV文件中直接寫入HBase的表或者寫入一個HBase的自有格式數據文件。
盡管importtsv 工具在需要將文本數據導入HBase的時候十分有用,但是有一些情況,比如導入其他格式的數據,你會希望使用編程來生成數據,而MapReduce是處理海量數據最有效的方式。這可能也是HBase中加載海量數據唯一最可行的方法了。當然我們可以使用MapReduce向HBase導入數據,但海量的數據集會使得MapReduce Job也變得很繁重。若處理不當,則可能使得MapReduce的job運行時的吞吐量很小。
在HBase中數據合并是一項頻繁執行寫操作任務,除非我們能夠生成HBase的內部數據文件,并且直接加載。這樣盡管HBase的寫入速度一直很快,但是若合并過程沒有合適的配置,也有可能造成寫操作時常被阻塞。寫操作很重的任務可能引起的另一個問題就是將數據寫入了相同的族群服務器(region server),這種情況常出現在將海量數據導入到一個新建的HBase中。一旦數據集中在相同的服務器,整個集群就變得不平衡,并且寫速度會顯著的降低。我們將會在本文中致力于解決這些問題。我們將從一個簡單的任務開始,使用API中的Put方法將MySQL中的數據導入HBase。接著我們會描述如何使用 importtsv 和 bulk load將TSV數據文件導入HBase。我們也會有一個MapReduce樣例展示如何使用其他數據文件格式來導入數據。上述方式都包括將數據直接寫入HBase中,以及在HDFS中直接寫入HFile類型文件。本文中最后一節解釋在向HBase導入數據之前如何構建好集群。本文代碼均是以Java編寫,我們假設您具有基本Java知識,所以我們將略過如何編譯與打包文中的Java示例代碼,但我們會在示例源碼中進行注釋。

查看完整回答
反對 回復 2018-10-26
  • 1 回答
  • 0 關注
  • 1566 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號