往HBase匯入資料的幾種操作
HBase作為Hadoop DataBase,除了使用put進行資料匯入之外,還有以下幾種匯入資料的方式:
(1)使用importTsv功能將csv檔案匯入HBase;
(2)使用import功能,將資料匯入HBase;
(3)使用BulkLoad功能將資料匯入HBase。
接下來,小編將對這三種方法分別進行介紹~
一、使用importTsv功能將csv檔案匯入HBase
使用importTsv功能可以將csv格式的檔案匯入到HBase中,其格式如下:
hbase [類] [分隔符] [行鍵,列族] [表] [匯入檔案]
例如:
1、建立f.csv檔案,其內容如下:
2、將檔案上傳至HDFS,並修改相應的讀寫許可權
3、建立HBase表
4、執行上述的MapReduce操作
/etc/init.d/TDH-Client/hyperbase/bin/hbase \
org.apache.hadoop.hbase.mapreduce.ImportTsv -Dimporttsv.separator="," \
-Dimporttsv.columns=HBASE_ROW_KEY,f1 test /user/f.csv
MapReduce執行成功之後會顯示下圖結果:
5、檢視匯入HBase中的資料
二、使用import功能,將資料匯入HBase
使用import功能進行資料匯入,匯入的檔案必須是sequence檔案。與import相對的還有export功能,export功能匯出的檔案為sequence檔案。
例如:
1、首先使用export功能將HBase表中的資料匯出,程式碼如下:
/etc/init.d/TDH-Client/hyperbase/bin/hbase \
org.apache.hadoop.hbase.mapreduce.Export test /user/hbase/output
得到結果如下圖所示:
2、建立一個新的HBase表,此處需要注意的是:新表的列族需跟匯出表的列族一致
3、執行import的MapReduce
/etc/init.d/TDH-Client/hyperbase/bin/hbase \
org.apache.hadoop.hbase.mapreduce.Import test2 /user/hbase/output
4、檢視HBase表中的資料
三、使用BulkLoad功能將資料匯入HBase
HBase支援BulkLoad的匯入方式,它是利用HBase的資料資訊按照特定格式儲存在hdfs內這一原理,直接在HDFS中生成持久化的HFile資料格式檔案,然後上傳至適當位置,即完成巨量資料快速入庫的辦法。配合MapReduce完成,不佔用region資源,在大資料量寫入時,能極大的提高寫入效率,並降低對HBase節點的寫入壓力。
通過使用先生成HFile,然後再BulkLoad到HBase的方式來匯入資料有如下的好處:
1、消除了對HBase叢集的插入壓力;
2、提高了Job的執行速度,降低了Job的執行時間。
其格式如下:
1、通過importTsv生成HFile檔案,此過程會主動建立HBase表和HDFS上對應的目錄
hbase [類] [分隔符] [輸出儲存路徑] [行鍵,列族] [表] [匯入原始資料檔案]
2、通過completebulkload將資料匯入到HBase表
hadoop jar [hbase server jar包] completebulkload [HFile檔案路徑] [表名]
例如:
1、通過importTsv生成HFile檔案
/etc/init.d/TDH-Client/hyperbase/bin/hbase \
org.apache.hadoop.hbase.mapreduce.ImportTsv -Dimporttsv.separator="," \
-Dimporttsv.bulk.output=/user/hbase/hfile_output \
-Dimporttsv.columns=HBASE_ROW_KEY,f1 test4 /user/f.csv
此過程會主動建立HBase表和HDFS上對應的目錄
2、將資料匯入到HBase表中
hadoop jar \
/etc/init.d/TDH-Client/hyperbase/lib/hbase-server-0.98.6-transwarp-5.1.1.jar \
completebulkload /user/hbase/hfile_output test4
你們在此過程中遇到了什麼問題,歡迎留言,讓我看看你們都遇到了哪些問題。