1. 程式人生 > >往HBase匯入資料的幾種操作

往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

 

你們在此過程中遇到了什麼問題,歡迎留言,讓我看看你們都遇到了哪些問題。