Author: gcrieloue Date: 2010-01-26 14:47:13 +0100 (Tue, 26 Jan 2010) New Revision: 15 Added: trunk/src/main/java/org/nuiton/mapstoragemanager/plugins/HBase.java trunk/src/main/java/org/nuiton/mapstoragemanager/plugins/OurHashMap.java Log: Ajout des sources des plugins Added: trunk/src/main/java/org/nuiton/mapstoragemanager/plugins/HBase.java =================================================================== --- trunk/src/main/java/org/nuiton/mapstoragemanager/plugins/HBase.java (rev 0) +++ trunk/src/main/java/org/nuiton/mapstoragemanager/plugins/HBase.java 2010-01-26 13:47:13 UTC (rev 15) @@ -0,0 +1,167 @@ +import java.io.IOException; +import java.util.ArrayList; +import java.util.HashSet; +import java.util.Set; +import org.nuiton.mapstoragemanager.plugins.BigTable; + +import org.apache.hadoop.hbase.HBaseConfiguration; +import org.apache.hadoop.hbase.client.Get; +import org.apache.hadoop.hbase.client.HTable; +import org.apache.hadoop.hbase.client.Put; +import org.apache.hadoop.hbase.client.Result; +import org.apache.hadoop.hbase.client.ResultScanner; +import org.apache.hadoop.hbase.client.Scan; +import org.apache.hadoop.hbase.util.Bytes; + + +public class HBase implements BigTable { + + private HBaseConfiguration config; + private HTable table; + private String familyName = "mylittlecolumnfamily"; + private String rowName = "myLittleRow"; + private String tableName = "mylittletable"; + + public HBase(){ + // You need a configuration object to tell the client where to connect. + // When you create a HBaseConfiguration, it reads in whatever you've set + // into your hbase-site.xml and in hbase-default.xml, as long as these can + // be found on the CLASSPATH + org.apache.hadoop.conf.Configuration conf = new org.apache.hadoop.conf.Configuration(); + config = new HBaseConfiguration(conf); + System.out.println("test"); + selectTable(tableName); + put("test", "val"); + put("test", "val2"); + put("test2", "val3"); + } + + @Override + public void put(String key, String value) { + + // To add to a row, use Put. A Put constructor takes the name of the row + // you want to insert into as a byte array. In HBase, the Bytes class has + // utility for converting all kinds of java types to byte arrays. In the + // below, we are converting the String "myLittleRow" into a byte array to + // use as a row key for our update. Once you have a Put instance, you can + // adorn it by setting the names of columns you want to update on the row, + // the timestamp to use in your update, etc.If no timestamp, the server + // applies current time to the edits. + Put p = new Put(Bytes.toBytes(rowName)); + + // To set the value you'd like to update in the row 'myRow', specify the + // column family, column qualifier, and value of the table cell you'd like + // to update. The column family must already exist in your table schema. + // The qualifier can be anything. All must be specified as byte arrays as + // hbase is all about byte arrays. Lets pretend the table + // 'myLittleHBaseTable' was created with a family 'myLittleFamily'. + p.add(Bytes.toBytes(familyName), Bytes.toBytes(key), + Bytes.toBytes(value)); + + // Once you've adorned your Put instance with all the updates you want to + // make, to commit it do the following (The HTable#put method takes the + // Put instance you've been building and pushes the changes you made into + // hbase) + + /*try { + table.put(p); + } catch (IOException e1) { + // TODO Auto-generated catch block + e1.printStackTrace(); + } +*/ + } + + @Override + public String get(String key) { + + // Now, to retrieve the data we just wrote. The values that come back are + // Result instances. Generally, a Result is an object that will package up + // the hbase return into the form you find most palatable. + Get g = new Get(Bytes.toBytes(rowName)); + Result r; + byte [] value = null; +// try { +// r = table.get(g); +// value = r.getValue(Bytes.toBytes(familyName), +// Bytes.toBytes(key)); +// } catch (IOException e) { +// e.printStackTrace(); +// } + + // If we convert the value bytes, we should get back 'Some Value', the + // value we inserted at this location. + String valueStr = Bytes.toString(value); + + return "valeur"; + //return valueStr; + } + + @Override + public Set<String> getKeys() { + + Set<String> keySet = new HashSet<String>(); + + // Sometimes, you won't know the row you're looking for. In this case, you + // use a Scanner. This will give you cursor-like interface to the contents + // of the table. To set up a Scanner, do like you did above making a Put + // and a Get, create a Scan. Adorn it with column names, etc. + Scan s = new Scan(); + //s.addColumn(Bytes.toBytes(familyName), Bytes.toBytes("test")); + ResultScanner scanner = null; + try { + scanner = table.getScanner(s); + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + try { + // Scanners return Result instances. + // Now, for the actual iteration. One way is to use a while loop like so: + try { + for (Result rr = scanner.next(); rr != null; rr = scanner.next()) { + // print out the row we found and the columns we were looking for + System.out.println("Found row: " + rr); + keySet.add(rr.toString()); + } + + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + + // The other approach is to use a foreach loop. Scanners are iterable! + // for (Result rr : scanner) { + // System.out.println("Found row: " + rr); + // } + } finally { + // Make sure you close your scanners when you are done! + // Thats why we have it inside a try/finally clause + scanner.close(); + } + + return keySet; + } + + public void selectTable(String tableName){ + // This instantiates an HTable object that connects you to + // the "myLittleHBaseTable" table. + try { + table = new HTable(config, tableName); + } catch (IOException e) { + e.printStackTrace(); + } + } + + @Override + public void connect(String host, String base, String username, + String password) { + // TODO Auto-generated method stub + + } + + public static void main(String[] args) { + HBase h = new HBase(); + } + +} Added: trunk/src/main/java/org/nuiton/mapstoragemanager/plugins/OurHashMap.java =================================================================== --- trunk/src/main/java/org/nuiton/mapstoragemanager/plugins/OurHashMap.java (rev 0) +++ trunk/src/main/java/org/nuiton/mapstoragemanager/plugins/OurHashMap.java 2010-01-26 13:47:13 UTC (rev 15) @@ -0,0 +1,35 @@ +package org.nuiton.mapstoragemanager.plugins; + +import java.util.HashMap; +import java.util.Set; + +import org.nuiton.mapstoragemanager.plugins.BigTable; + +public class OurHashMap implements BigTable{ + + HashMap<String,String> map = new HashMap<String, String>(); + + public String get(String key) { + return map.get(key); + } + + public Set<String> getKeys() { + return map.keySet(); + } + + public void put(String key, String value) { + map.put(key, value); + } + + public void connect(String host, String base, String username, + String password) { + // TODO Auto-generated method stub + + } + + public void selectTable(String table) { + // TODO Auto-generated method stub + + } + +}