国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      一種HBase讀寫時序性數據的方法及系統與流程

      文檔序號:12121888閱讀:1057來源:國知局
      本發(fā)明涉及大數據處理的
      技術領域
      :,尤其涉及一種HBase讀寫時序性數據的方法,以及HBase讀寫時序性數據的系統。
      背景技術
      ::HBase是一個分布式的、面向列的開源數據庫,該技術來源于FayChang所撰寫的Google論文“Bigtable:一個結構化數據的分布式存儲系統”。就像Bigtable利用了Google文件系統(FileSystem)所提供的分布式數據存儲一樣,HBase在Hadoop之上提供了類似于Bigtable的能力。HBase是Apache的Hadoop項目的子項目。HBase不同于一般的關系數據庫,它是一個適合于非結構化數據存儲的數據庫。另一個不同的是HBase基于列的而不是基于行的模式。在HBase存入時序性數據的情況下,每行數據是一個時間點的數據。要讀取一段時間范圍內的數據,需要依次查詢多行數據。HBase表的主鍵設計需要將時間作為第一主鍵。查詢時設定起始鍵和終止鍵為兩個時間點,兩個時間點內的數據將被查詢出來。HBase表的主鍵是按照字典序排序的,表按照主鍵的取值范圍分為多個分區(qū)。最新的數據寫入的時候,會寫入到一個分區(qū)中。由于一個分區(qū)由一個服務器管理,本臺服務器將成為熱點,而其他分區(qū)和服務器沒有數據寫入,處于空閑狀態(tài)。因此,原生的HBase讀寫數據的API,在讀寫時序性數據的時候,會導致熱點分區(qū),熱點服務器,造成讀寫數據的請求在服務器之間是負載不均衡的。技術實現要素:為克服現有技術的缺陷,本發(fā)明要解決的技術問題是提供了一種HBase讀寫時序性數據的方法,其能夠實現讀寫數據的請求在服務器之間是負載均衡的。本發(fā)明的技術方案是:這種HBase讀寫時序性數據的方法,該方法包括以下步驟:(1)規(guī)劃分區(qū)數量;(2)在HBase里為表預創(chuàng)建分區(qū);(3)在寫入數據之前,計算出分區(qū)值,并且修改數據主鍵,寫入HBase;(4)讀取數據時,根據所有的分區(qū)值,形成新的迭代器,讀取數據。本發(fā)明通過規(guī)劃分區(qū)數量,在HBase里為表預創(chuàng)建分區(qū),在寫入數據之前,計算出分區(qū)值,并且修改數據主鍵,讀取數據時,根據所有的分區(qū)值,形成新的迭代器,讀取數據,因此能夠實現讀寫數據的請求在服務器之間是負載均衡的。還提供了一種HBase讀寫時序性數據的系統,該系統包括:規(guī)劃模塊,其配置來規(guī)劃分區(qū)數量;創(chuàng)建模塊,其配置來在HBase里為表預創(chuàng)建分區(qū);數據寫入模塊,其配置來在寫入數據之前,計算出分區(qū)值,并且修改數據主鍵,寫入HBase;數據讀取模塊,其配置來讀取數據時,根據所有的分區(qū)值,形成新的迭代器,讀取數據。附圖說明圖1所示為根據本發(fā)明的HBase讀寫時序性數據的方法的流程圖。具體實施方式如圖1所示,這種HBase讀寫時序性數據的方法,該方法包括以下步驟:(1)規(guī)劃分區(qū)數量;(2)在HBase里為表預創(chuàng)建分區(qū);(3)在寫入數據之前,計算出分區(qū)值,并且修改數據主鍵,寫入HBase;(4)讀取數據時,根據所有的分區(qū)值,形成新的迭代器,讀取數據。本發(fā)明通過規(guī)劃分區(qū)數量,在HBase里為表預創(chuàng)建分區(qū),在寫入數據之前,計算出分區(qū)值,并且修改數據主鍵,讀取數據時,根據所有的分區(qū)值,形成新的迭代器,讀取數據,因此能夠實現讀寫數據的請求在服務器之間是負載均衡的。另外,所述步驟(1)中,分區(qū)數量是HBase服務器數量的倍數。這樣有利于每臺服務器上讀寫量均衡。另外,所述步驟(2)中,當分區(qū)數為M時,M為大于1的整數,取0、1……M-1的值,類型為byte,作為切分鍵,對HBase表進行切分,切分出M個分區(qū)。另外,所述步驟(3)中,根據時序數據的主鍵,計算其hashcode,將hashcode取絕對值后,與分區(qū)數取模,得到分區(qū)值。另外,所述步驟(3)中,修改每條時序數據的主鍵值時,源主鍵是一個byte數組;生成一個新的byte數組,長度是源數組的長度加1;將新數組的第一位賦予分區(qū)值;新數組其他位,依次由源數組每一位賦值;新數組作為新的主鍵,寫入HBase。假設分區(qū)數是M。對于寫入的時序性數據,分區(qū)值是比較均勻的分布在0與M-1之間的。所以數據會比較均勻的寫入不同的分區(qū)。另外,所述步驟(4)中,讀取一段時間范圍內的數據,起始鍵是開始時間,終止鍵是結束時間;取出所有的分區(qū)值0到M-1,類型為byte;根據每一個分區(qū)值,依次構建新的起始鍵和終止鍵;構建方式為將分區(qū)值放到起始鍵byte數組的第一位、終止鍵byte數組的第一位,根據新的起始鍵和終止鍵,構建M個掃描器Scanner;每個Scanner讀取數據后,將獲取到的主鍵轉變成原始主鍵,去掉第一位byte分區(qū)值,然后將原始主鍵進行字典排序,根據字典序由小到大返回。而且,可以封裝成API,在寫入數據和讀取數據之前,計算出分區(qū)值,并且修改數據主鍵。讀取數據時,根據所有的分區(qū)值,形成新的迭代器,讀取數據。API供其他程序訪問HBase時使用。本領域普通技術人員可以理解,實現上述實施例方法中的全部或部分步驟是可以通過程序來指令相關的硬件來完成,所述的程序可以存儲于一計算機可讀取存儲介質中,該程序在執(zhí)行時,包括上述實施例方法的各步驟,而所述的存儲介質可以是:ROM/RAM、磁碟、光盤、存儲卡等。因此,與本發(fā)明的方法相對應的,本發(fā)明還同時包括一種HBase讀寫時序性數據的系統,該系統通常以與方法各步驟相對應的功能模塊的形式表示。使用該方法的系統包括:規(guī)劃模塊,其配置來規(guī)劃分區(qū)數量;創(chuàng)建模塊,其配置來在HBase里為表預創(chuàng)建分區(qū);數據寫入模塊,其配置來在寫入數據之前,計算出分區(qū)值,并且修改數據主鍵,寫入HBase;數據讀取模塊,其配置來讀取數據時,根據所有的分區(qū)值,形成新的迭代器,讀取數據。另外,所述規(guī)劃模塊中,分區(qū)數量是HBase服務器數量的倍數。另外,所述創(chuàng)建模塊中,當分區(qū)數為M時,M為大于1的整數,取0、1……M-1的值,類型為byte,作為切分鍵,對HBase表進行切分,切分出M個分區(qū)。另外,所述數據寫入模塊中,根據時序數據的主鍵,計算其hashcode,將hashcode取絕對值后,與分區(qū)數取模,得到分區(qū)值;修改每條時序數據的主鍵值時,源主鍵是一個byte數組;生成一個新的byte數組,長度是源數組的長度加1;將新數組的第一位賦予分區(qū)值;新數組其他位,依次由源數組每一位賦值;新數組作為新的主鍵,寫入HBase。另外,所述數據讀取模塊中,讀取一段時間范圍內的數據,起始鍵是開始時間,終止鍵是結束時間;取出所有的分區(qū)值0到M-1,類型為byte;根據每一個分區(qū)值,依次構建新的起始鍵和終止鍵;構建方式為將分區(qū)值放到起始鍵byte數組的第一位、終止鍵byte數組的第一位,根據新的起始鍵和終止鍵,構建M個掃描器Scanner;每個Scanner讀取數據后,將獲取到的主鍵轉變成原始主鍵,去掉第一位byte分區(qū)值,然后將原始主鍵進行字典排序,根據字典序由小到大返回。以上所述,僅是本發(fā)明的較佳實施例,并非對本發(fā)明作任何形式上的限制,凡是依據本發(fā)明的技術實質對以上實施例所作的任何簡單修改、等同變化與修飾,均仍屬本發(fā)明技術方案的保護范圍。當前第1頁1 2 3 當前第1頁1 2 3 
      當前第1頁1 2 3 
      網友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1