HBase Bulk Load的基本使用

2021-07-24 22:52:18 字數 2447 閱讀 6764

最近在專案中需要將大量存在於文字檔案中的資料批量匯入到hbase表中,並且涉及到將多個文字檔案中的資料合併到同一張hbase表中,而這些文字檔案中的字段並不是完全相同的

因為專案當中查詢資料採用的是phoenix,因此,最初想利用phoenix的bulk csv data loading來實現,但是簡單調研之後,發現並不適合我們本次的需求,後面我會補充一篇文章來對hbase的bulkload和phoenix的bulk csv data loading進行乙個簡單的對比

hbase bulk load分為兩個步驟,第乙個步驟採用mapreduce將檔案中的資料轉換成hbase內部的資料格式,第二個步驟直接將生成的storefiles匯入到hbase當中,使用bulk load導資料比直接使用hbase api能夠明顯地降低cpu和網路資源的使用率

4.1.importtsv

importtsv是乙個能夠將tsv格式的資料處理成可以直接匯入到hbase中的資料格式(storefiles)的工具,基本使用方式如下:

hadoop_classpath=

`$/bin/hbase classpath` $/bin/hadoop jar $/hbase-server

-version

.jar importtsv -dimporttsv

.columns=hbase_row_key,d:c1,d:c2 -dimporttsv

.bulk.output=hdfs://storefileoutput datatsv hdfs://inputfile

這一步執行完畢後會在hdfs的/storefile-outputdir中生成中間檔案storefiles,接著呼叫completebulkload就可以將資料最終匯入到hbase中 注:

補充幾個可選引數:

-dimporttsv.skip

.bad

.lines=false -遇到錯誤行則任務自動失敗

-dimporttsv.separator=, -自定義行內分隔符為comma

-dimporttsv.timestamp=currenttimeaslong -匯入資料時使用自定義的時間戳(基本不用)

.hadoop

.hbase

.mapreduce

4.2completebulkload

completebulkload 會將上一步生成的storefiles匯入到hbase中,匯入成功後自動刪除這些中間檔案

hadoop_classpath=`$/bin/hbase classpath`

$/bin/hadoop jar $/hbase-server-version.jar completebulkload //storefileoutput>

如果需要bulkload的資料量過大,在hbase建表的時候請提前做好合適的pre-split

6.1hbase建表語句

create 'user', '0', splits => ['1', '2', '3', '4', '5','6', '7', '8', '9']
6.2importtsv

注:6.2和6.3中的命令和jar包路徑均為hdp2.5的預設安裝位置

hadoop_classpath=

`/usr/hdp/current/hbase-master/bin/hbase classpath` /usr/hdp/current/hadoop-client/bin/hadoop jar /usr/hdp/2.5

.0.0

-1245/hbase/lib/hbase-server

-1.1

.2.2

.5.0.0-

1245.jar importtsv -dimporttsv

.separator=, -dimporttsv

.columns=hbase_row_key,0:id_name,0:id_no,0:id_type,0:user_status,0:if_receive,0:mobile_no -dimporttsv

.bulk.output=hdfs:///bulkdata/a user hdfs:///data/wb10_user1019_im.txt

6.3complete bulk load
hadoop_classpath=

`/usr/hdp/current/hbase-master/bin/hbase classpath` /usr/hdp/current/hadoop-client/bin/hadoop jar /usr/hdp/2.5

.0.0

-1245/hbase/lib/hbase-server

-1.1

.2.2

.5.0.0-

1245.jar completebulkload hdfs:///bulkdata/a user

HBase BulkLoad批量寫入資料實戰

在進行資料傳輸中,批量載入資料到hbase集群有多種方式,比如通過hbase api進行批量寫入資料 使用sqoop工具批量導數到hbase集群 使用mapreduce批量匯入等。這些方式,在匯入資料的過程中,如果資料量過大,可能耗時會比較嚴重或者占用hbase集群資源較多 如磁碟io hbase ...

封基和開基的異同

封閉式 簡稱 封基 學名叫 契約型封閉式 開放式 簡稱 開基 學名叫 契約型開放式 相同點大致有 一 都是 管理公司的集合理財產品 二 都屬於面向社會公開募集 的範疇 三 都要執行 法 和規範的會計準則 四 都要按照資產淨值提取管理費 託管費 五 目前 分紅都不需要交納個人所得稅 歡迎補充 不同點有...

Shape Basedmatching的基本流程

1 確定出roi的矩形區域 2 從roi區域提取出影象 可以先進行影象處理 3 建立模板 create shape model 金字塔級數 由numlevels 指定 值越大則 找到物體的時間 越少 anglestart 和angleextent 決定可能的旋轉範圍,anglestep指定角度範圍搜...