原文:
bulkload是向hbase批量載入資料的方式,它會直接將資料進行準備和並載入成hfile,並直接講檔案插入到regionserver中,這比通過乙個mapreduce/spark作業來載入效能高得多。詳細的流程如下:
1. 抽取資料並形成固定格式的檔案,比如csv。
2. 將資料轉換稱為hfile。這需要乙個mapreduce作業,可以自己來實現map方法來,hbase來完成後面的reducer操作。最後,每乙個region的hfile將會在輸出目錄被建立出來。
3. 將生成的hfile載入到hbase中,並在所有的regionserver上註冊它們,即完成complete bulkload階段。
下面我們生成乙個實驗資料集:
1
2
3
4
debugo
,beijing
le,shanghai
sariel
,beijing
elvis
,beijing
首先我們在hbase建立需要load進入的表: 1
2
3
>
create
'user_info'
,'city'
0row(s)
in0.4310
seconds
=>
hbase
::table
-user_info
12
3
4
5
6
7
8
9
10
11
hdfs
dfs-
mkdir-p
/user
/yarn
hdfs
dfs-
chown-r
yarn
:hadoop
/user
/yarn
hdfs
dfs-
setfacl-r
-muser
:hbase
:rwx
/user
/yarn
hdfs
dfs-
put/
var/
lib/
hadoop
-yarn
/user
.txt
/user
/yarn
# 下面執行importtsv,bulkload的相應的mapreduce作業會在後台啟動。
hbase
org.apache
.hadoop
.hbase
.mapreduce
.importtsv
'-dimporttsv.separator=,'
-dimporttsv
.columns
='hbase_row_key,city'
-dimporttsv
.bulk
.output=/
user
/yarn
/output
user_info
/user
/yarn
# 作業執行完成後,我們檢視一下輸出目錄,相應列簇的hfile已經建立。
hdfs
dfs-ls/
user
/yarn
/output
found
2items
-rw-
r--r--
3hbase
hadoop
02015-03
-1018:
46/user
/yarn
/output
/_success
drwxr-xr
-x-hbase
hadoop
02015-03
-1018:
46/user
/yarn
/output
/city
下面我們開始執行completebulkload的操作,將生成的hfile註冊到regionserver中。其中第乙個引數是hfile的輸出目錄,第二個引數是載入進的表名。 1
hbase
org.
apache
.hadoop
.hbase
.mapreduce
.loadincrementalhfiles
/user
/yarn
/output
user_info
進入hbase shell,檢查bulkload的資料 1
2
3
4
5
6
7
8
>
scan
'user_info'
row
column
+cell
debugo
column
=city:,
timestamp
=1425984345182
,value
=beijing
elvis
column
=city:,
timestamp
=1425984345182
,value
=beijing
le
column
=city:,
timestamp
=1425984345182
,value
=shangha
i sariel
column
=city:,
timestamp
=1425984345182
,value
=beijing
4row(s)
in0.0390
seconds
更多的資訊請參見:
使用importTsv完成HBase 的資料遷移
使用hbase put api 例如mapreduce也是使用put api 使用hbase批量載入工具 自定義的mapreduce job 這三種方式都涉及到put內建,大多數資料遷移場景都涉及到資料的匯入 import 從存在的rdbms匯入到hbase中去,大多數簡單直接的方法是直接獲取資料,...
使用COPY命令在Vertica中載入資料
使用copy語句批量載入 copy語句是將大量資料載入到vertica資料庫中的最有效方式。您可以使用copy命令將乙個或多個檔案複製到群集主機上。對於批量載入,最有用的copy命令是 copy local 將資料檔案或所有指定的檔案從本地客戶端系統載入到伺服器處理檔案的vertica主機。在ver...
使用ModuleLoader載入模組
mx.modules.moduleloader類是乙個容器類,功能類似於mx.controls.swfloader 元件。它載入swf並把模組新增到應用程式的顯示列表。moduleloader和swfloader不同之處在於它有乙個約定,這個被載入的swf須實現iflexmodulefactory。...