[Software]
Hadoop2.4.1
HBase 0.98.5
[Reference]
- http://www.openscg.com/2013/08/hadoop-hbase-tutorial/ (Operations)
- http://wiki.apache.org/hadoop/Hbase/Shell (HBase shell command)
Input type:
14/09/15 18:20:35, Z00 B00 ,0050.50 ,0053.26 ,0053.45 ,1251.06 ,0291.25 ,FF
14/09/15 18:20:35, Z00 B01 ,0053.50 ,0055.80 ,0056.03 ,1249.79 ,0357.45 ,FF
.......
Table:
| | type | m1 |
------------------------------------------------------------------------------------
HBASE_ROW_KEY | states | deg | high | heat | lenght | avg |char|
------------------------------------------------------------------------------------
14/09/15 18:20:35 | Z00 B00 | 0050.50 | 0053.26 | 0053.45 | 1251.06 | 0291.25 | FF |
14/09/15 18:20:35 | Z00 B01 | 0053.50 | 0055.80 | 0056.03 | 1249.79 | 0357.45 | FF |
.......
Step:
$hbase shell
> create 'log_data', 'type','m1' //建立"log_data",其中包含兩個 column family, "type" and "m1"
> quit
$hbase org.apache.hadoop.hbase.mapreduce.ImportTsv '-Dimporttsv.separator=,' -Dimporttsv.columns=HBASE_ROW_KEY,type:states,m1:deg,m1:high,m1:heat,m1:length,m1:avg,m1:char log_data /user/hduser/test_log.csv
- org.apache.hadoop.hbase.mapreduce.ImportTsv
執行 hbase-server-${version}-hadoop2.jar 中的 ImportTsv Class,這讓HBASE可以載入csv格式的data
- '-Dimporttsv.separator=,'
讓HBase知道每行資料值的分隔界線為","
- -Dimporttsv.columns
設定Columns Family(在hbase shell建立的'type'與'm1'),至少要有一個HBASE_ROW_KEY來當row key,
column格式則為 "columnfamilyname:columnname" ex: "m1:deg"
- log_data
此arg為input table name (即於hbase shell中建立的 "log_data")
- /user/hduser/test_log.csv
此arg為input file name ,對應位置為與HBASE連結的HDFS
$hbase shell
> scan 'log_data' // 查看輸入資料的table
[Future Work]
1. 尚未對完整log包含後面刪除欄位做輸入
2. 透過其他更簡便的介面或程式碼做Input
沒有留言:
張貼留言