| Version 1 (modified by waue, 17 years ago) (diff) |
|---|
Sample Code of Show Hbase Write&Read by Map-Reduce "
Abstract
The demo program will insert values to " Column Family: Column Identify" and then print these.
- pre-do : create a hbase table "test_table" with (CF:CI) which (" column family ", " column ID ")
1 $ bin/hbase shell
2 > create table test_table("CF");
ok ! we can test it
3 > insert into test_table("CF:CI") values=("Hellow World") where row = "1";
4 > select * from test_table;
08/06/03 16:16:36 INFO hbase.HTable: Creating scanner over test_table starting at key +---------+-----------+-----------+ | Row | Column | Cell | +---------+-----------+-----------+ | 1 | CF:CI | Hellow World | +---------+-----------+-----------+ 1 row(s) in set. (0.24 sec)
on the structure , Row means Row ID which is a key to describe a column;
Column means the database structure in test_table,
Column Family , "CF", should be defined while creating table.
Column Id , "CI" , can be added dynamically.
Cell is the value of CF:CI
Output
That's the structure; then the demo program will show you in console as below :
Illustration of adding data... Writing row = 0, col 'CF:CI' = Hellow0 Writing row = 1, col 'CF:CI' = Hellow1 Writing row = 2, col 'CF:CI' = Hellow2 Writing row = 3, col 'CF:CI' = Hellow3 Writing row = 4, col 'CF:CI' = Hellow4 Writing row = 5, col 'CF:CI' = Hellow5 Writing row = 6, col 'CF:CI' = Hellow6 Writing row = 7, col 'CF:CI' = Hellow7 Writing row = 8, col 'CF:CI' = Hellow8 Writing row = 9, col 'CF:CI' = Hellow9 Illustration of querying... row = 1, 'CF : CI ' = Hellow1 Illustration of scanning... 08/06/03 16:47:51 INFO hbase.HTable: Creating scanner over test_table starting at key row = 0//9223372036854775807, col 'CF:CI' = Hellow0 row = 1//9223372036854775807, col 'CF:CI' = Hellow1 row = 2//9223372036854775807, col 'CF:CI' = Hellow2 row = 3//9223372036854775807, col 'CF:CI' = Hellow3 row = 4//9223372036854775807, col 'CF:CI' = Hellow4 row = 5//9223372036854775807, col 'CF:CI' = Hellow5 row = 6//9223372036854775807, col 'CF:CI' = Hellow6 row = 7//9223372036854775807, col 'CF:CI' = Hellow7 row = 8//9223372036854775807, col 'CF:CI' = Hellow8 row = 9//9223372036854775807, col 'CF:CI' = Hellow9
code
/*
* DemoHBaseClient.java
*/
// package tw.org.nchc.demo;
import java.io.IOException;
import java.util.SortedMap;
import java.util.TreeMap;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.HScannerInterface;
import org.apache.hadoop.hbase.HStoreKey;
import org.apache.hadoop.hbase.HTable;
import org.apache.hadoop.io.Text;
public class DemoHBaseClient {
public static void main(String[] args) throws IOException {
// Open the "test_table" table. If it hasn't been in Hbase, you should create.
HBaseConfiguration conf = new HBaseConfiguration();
HTable table = new HTable(conf, new Text("test_table"));
System.out.println("Illustration of adding data...");
// create column formed (Column Family:Column Id)
Text column = new Text("CF:CI");
// create row_id
Text row_id = new Text();
// demo 1 : Insert ten demo values
for (int i = 0; i < 10; i++) {
// give row_id value
row_id.set(new Integer(i).toString());
// let "indicate_id" indicate the column which row = row_id
long indicate_id= table.startUpdate(row_id);
//val = value of CF:CI where row_id = i
Text val = new Text("Hellow" + i);
// put "val" to "column" from "table" where "row_id"
// the same as :
// hql> INSERT INTO table( column ) VALUES=( val) WHERE ROW = row_id ;
table.put(indicate_id, column, val.getBytes());
table.commit(indicate_id);
System.out.println("Writing row = " + row_id + ", col '" + column
+ "' = " + val);
}
// demo 2 : print column value only row = 1 ;
System.out.println("\n Querying row = 1");
// Get a single value for the specified row and column
// byte[] = HTable.get(Text row, Text column)
String s = Text.decode(table.get(new Text("1"),new Text("CF:CI")));
// if change as
// String s = (table.get(new Text("1"),new Text("CF:CI"))).toString();
// will get chaos code " [B@1f14ceb"
System.out.println("row = 1, 'CF : CI ' = " + s);
// demo 3 : Print the all contents of this table
System.out.println("\nIllustration of scanning...");
// we only want one column, but you can specify multiple columns to
// fetch at once
Text[] cols = { column };
// Use HScannerInterface to crawl table
HScannerInterface scanner = table.obtainScanner(cols, new Text());
// column values are stored in a Map
SortedMap<Text, byte[]> values = new TreeMap<Text, byte[]>();
HStoreKey currentKey = new HStoreKey();
while (scanner.next(currentKey, values)) {
// decode the stored byte[] back into a String
String val = Text.decode(values.get(column));
System.out.println("row = " + currentKey + ", col '" + column + "' = "
+ val);
}
// remember to close scanner when done
scanner.close();
}
}
