[發明專利]基于HBase的數據導入方法和系統有效
| 申請號: | 201410016490.4 | 申請日: | 2014-01-14 |
| 公開(公告)號: | CN104778182B | 公開(公告)日: | 2018-03-02 |
| 發明(設計)人: | 鄭壯杰 | 申請(專利權)人: | 博雅網絡游戲開發(深圳)有限公司 |
| 主分類號: | G06F17/30 | 分類號: | G06F17/30 |
| 代理公司: | 廣州華進聯合專利商標代理有限公司44224 | 代理人: | 何平 |
| 地址: | 518057 廣東省深圳市南山區中山*** | 國省代碼: | 廣東;44 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 基于 hbase 數據 導入 方法 系統 | ||
【技術領域】
本發明涉及大數據處理技術,特別涉及基于HBase的數據導入方法和系統。
【背景技術】
隨著移動互聯網技術的高速發展,尤其是智能移動終端的廣泛普及,互聯網相關企業的業務數據量呈現爆發式的增長。如何快速有效地處理這些數據,將其轉化為有價值的信息,是亟需解決的問題。HBase(Hadoop Database)作為一個構建在HDFS(Hadoop Distributed File System,Hadoop分布式文件系統)上,具有高可靠性、高性能、面向列、可伸縮等優秀特性的分布式存儲系統,為數據的存儲和處理提供了經濟、高效、安全和可靠的保障,逐漸成為飽受海量數據困擾的企業存儲數據首選的解決方案。
有多種方法可以將數據加載到HBase的數據表中,比如通過MapReduce(一種用于大規模數據集的并行運算)調用TableOutputFormat(將MapReduce的輸出導入到HBase的一種方法)方法,或者將數據以HBase內部的組織格式輸出成文件加載到集群中,這些方法都需要啟動MapReduce,有一定的時間延遲,不能滿足對進行數據快速存儲的要求。
【發明內容】
基于此,有必要提供一種可提高數據導入速度的基于HBase的數據導入方法。
一種基于HBase的數據導入方法,包括以下步驟:
文件名提取線程提取文件壓縮池中新上報文件的文件名,將提取的文件名存放到無讀寫鎖的隊列;
文件處理線程從無讀寫鎖的隊列中獲取文件名,從所述文件壓縮池中提取文件名對應的文件,讀取文件為文件流;
文件處理線程將文件流中的行數據轉換為json對象;
文件處理線程根據json對象構造HBase的Row對象;
存儲線程將構造的Row對象導入HBase中。
在其中一個實施例中,根據json對象構造HBase的Row對象的步驟包括:
根據json對象構造Row對象的行鍵;
將構造的行鍵作為Row對象的主鍵初始化Row對象;
根據json對象構造初始化成功的Row對象的鍵值對。
在其中一個實施例中,所述根據json對象構造Row對象的行鍵的步驟包括:從行鍵構造規則配置文件中讀取json對象中的表名對應的行鍵構造規則;根據讀取的行鍵構造規則以及json對象中的鍵值對構造Row對象的行鍵;
根據json對象構造初始化成功的Row對象的鍵值對的步驟包括:根據json對象中的表名查找對應的列類型配置文件;將json對象中的列值轉換成其對應列名在列類型配置文件中對應的列類型的值;將已轉換為對應列類型的值轉化成字節數組;將列名與對應的列值構成鍵值對保存到初始化成功的Row對象中。
在其中一個實施例中,在所述根據json對象構造HBase的Row對象的步驟之后,所述方法還包括:文件處理線程將構造的Row對象保存到緩存池;
所述存儲線程將構造的Row對象導入HBase中的步驟包括:存儲線程監聽緩存池數據量大小,當緩存池數據量大小達到閾值時,將緩存池中的Row對象導入HBase中,重置緩存池。
在其中一個實施例中,所述方法還包括步驟:
驗證線程校驗HBase返回的寫入結果,若發生寫入錯誤,則記錄錯誤發生的行數據、行數據所在文件的文件名及行數據在文件中的行號。
此外,還有必要提供一種可提高數據導入速度的基于HBase的數據導入系統。
一種基于HBase的數據導入系統,包括以下步驟:
文件名提取模塊,用于提取文件壓縮池中新上報文件的文件名,將提取的文件名存放到無讀寫鎖的隊列;
文件讀取模塊,用于從隊列中獲取文件名,從所述文件壓縮池中提取文件名對應的文件,讀取文件為文件流;
json對象轉換模塊,用于將文件流中的行數據轉換為json對象;
Row對象構造模塊,用于根據json對象構造HBase的Row對象;
數據導入模塊,用于將構造的Row對象導入HBase中;
控制模塊,用于啟動文件名提取線程執行文件名提取模塊,啟動文件處理線程執行文件讀取模塊、json對象轉換模塊和Row對象構造模塊,以及啟動存儲線程執行數據導入模塊。
在其中一個實施例中,所述Row對象構造模塊包括:
行鍵構造模塊,用于根據json對象構造Row對象的行鍵;
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于博雅網絡游戲開發(深圳)有限公司,未經博雅網絡游戲開發(深圳)有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201410016490.4/2.html,轉載請聲明來源鉆瓜專利網。
- 數據顯示系統、數據中繼設備、數據中繼方法、數據系統、接收設備和數據讀取方法
- 數據記錄方法、數據記錄裝置、數據記錄媒體、數據重播方法和數據重播裝置
- 數據發送方法、數據發送系統、數據發送裝置以及數據結構
- 數據顯示系統、數據中繼設備、數據中繼方法及數據系統
- 數據嵌入裝置、數據嵌入方法、數據提取裝置及數據提取方法
- 數據管理裝置、數據編輯裝置、數據閱覽裝置、數據管理方法、數據編輯方法以及數據閱覽方法
- 數據發送和數據接收設備、數據發送和數據接收方法
- 數據發送裝置、數據接收裝置、數據收發系統、數據發送方法、數據接收方法和數據收發方法
- 數據發送方法、數據再現方法、數據發送裝置及數據再現裝置
- 數據發送方法、數據再現方法、數據發送裝置及數據再現裝置





