Permalink
Browse files

Moving to a more sane structure.

  • Loading branch information...
hammer committed May 16, 2010
1 parent 8cf73f4 commit 8b85088d941c0020592f9eabb543136630f11b8a
Showing with 213 additions and 240 deletions.
  1. +0 −123 JBase.java
  2. +129 −0 examples/cli.py
  3. +1 −0 pyhbase/__init__.py
  4. +71 −117 pyhbase.py → pyhbase/connection.py
  5. +12 −0 setup.py
View
@@ -1,123 +0,0 @@
-import java.io.IOException;
-
-import java.util.Arrays;
-import java.util.List;
-
-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.filter.Filter;
-import org.apache.hadoop.hbase.filter.FilterList;
-import org.apache.hadoop.hbase.filter.PrefixFilter;
-import org.apache.hadoop.hbase.filter.QualifierFilter;
-import org.apache.hadoop.hbase.filter.BinaryComparator;
-import org.apache.hadoop.hbase.filter.CompareFilter.CompareOp;
-import org.apache.hadoop.hbase.filter.FilterList.Operator;
-
-import org.apache.hadoop.hbase.util.Bytes;
-
-// Class that has nothing but a main.
-// Does a Put, Get and a Scan against an hbase table.
-public class JBase {
- public static void main(String[] args) throws IOException {
- // 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
- HBaseConfiguration config = new HBaseConfiguration();
-
- // This instantiates an HTable object that connects you to
- // the "myLittleHBaseTable" table.
- HTable table = new HTable(config, "t1");
-
- // 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("r1"));
-
- // To set the value you'd like to update in the row 'myLittleRow', 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("cf1"), Bytes.toBytes("c3"),
- Bytes.toBytes("fromtheclient"));
-
- // 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)
- table.put(p);
-
- // 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("r1"));
- Result r = table.get(g);
- byte [] value = r.getValue(Bytes.toBytes("cf1"),
- Bytes.toBytes("c3"));
- // If we convert the value bytes, we should get back 'Some Value', the
- // value we inserted at this location.
- String valueStr = Bytes.toString(value);
- System.out.println("GET: " + valueStr);
-
- // 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("cf1"), Bytes.toBytes("c1"));
- ResultScanner scanner = table.getScanner(s);
- try {
- // Scanners return Result instances.
- // Now, for the actual iteration. One way is to use a while loop like so:
- 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);
- }
-
- // 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();
- }
-
- // Using Filters
- Filter f1 = new PrefixFilter(Bytes.toBytes("r"));
- Filter f2 = new QualifierFilter(CompareOp.GREATER_OR_EQUAL, new BinaryComparator(Bytes.toBytes("c2")));
- List<Filter> fs = Arrays.asList(f1, f2);
- Filter f3 = new FilterList(Operator.MUST_PASS_ALL, fs);
-
- Scan s2 = new Scan();
-
- //s2.setFilter(f1);
- //s2.setFilter(f2);
- s2.setFilter(f3);
-
- ResultScanner scanner2 = table.getScanner(s2);
- try {
- for (Result rr : scanner2) {
- System.out.println("Filter " + s2.getFilter() + " matched row: " + rr);
- }
- } finally {
- scanner2.close();
- }
-
- } // main()
-} // Class
View
@@ -0,0 +1,129 @@
+#! /usr/bin/env python
+import sys
+
+from pyhbase.connection import HBaseConnection
+
+# TODO(hammer): Use optparse or python-gflags here
+if __name__=="__main__":
+ def usage():
+ print """
+ Usage: %s [-h host[:port]] command [arg1 [arg2...]]
+
+ Commands:
+ show_tables
+ describe_table table_name
+ get_table_regions table_name
+ is_table_enabled table_name
+
+ enable_table table_name
+ disable_table table_name
+ compact table_name
+ major_compact table_name
+
+ get table_name row_id
+ get_cell_versions table_name row_id column number_of_versions
+
+ put table_name row_id column_family column value
+
+ delete_row table_name row_id
+ delete_cells table_name row_id column
+
+ scan table_name start_row_id column_or_column_family number_of_rows
+ """ % sys.argv[0]
+
+ if len(sys.argv) <= 1 or sys.argv[1] == '--help':
+ usage()
+ sys.exit(0)
+
+ host = 'localhost'
+ port = 9090
+ argi = 1
+
+ if sys.argv[argi] == '-h':
+ parts = sys.argv[argi+1].split(':')
+ host = parts[0]
+ if len(parts) == 2:
+ port = int(parts[1])
+ argi += 2
+
+ cmd = sys.argv[argi]
+ args = sys.argv[argi+1:]
+
+ connection = HBaseConnection(host, port)
+
+ if cmd == 'show_tables':
+ if len(args) != 0:
+ usage()
+ sys.exit(1)
+ print connection.show_tables(*args)
+ elif cmd == 'describe_table':
+ if len(args) != 1:
+ usage()
+ sys.exit(1)
+ print connection.describe_table(*args)
+ elif cmd == 'get_table_regions':
+ if len(args) != 1:
+ usage()
+ sys.exit(1)
+ print connection.get_table_regions(*args)
+ elif cmd == 'is_table_enabled':
+ if len(args) != 1:
+ usage()
+ sys.exit(1)
+ print connection.is_table_enabled(*args)
+ elif cmd == 'enable_table':
+ if len(args) != 1:
+ usage()
+ sys.exit(1)
+ print connection.enable_table(*args)
+ elif cmd == 'disable_table':
+ if len(args) != 1:
+ usage()
+ sys.exit(1)
+ print connection.disable_table(*args)
+ elif cmd == 'compact':
+ if len(args) != 1:
+ usage()
+ sys.exit(1)
+ print connection.compact(*args)
+ elif cmd == 'major_compact':
+ if len(args) != 1:
+ usage()
+ sys.exit(1)
+ print connection.major_compact(*args)
+ elif cmd == 'get':
+ if len(args) != 2:
+ usage()
+ sys.exit(1)
+ print connection.get(*args)
+ elif cmd == 'get_cell_versions':
+ if len(args) != 4:
+ usage()
+ sys.exit(1)
+ print connection.get_cell_versions(*args)
+ elif cmd == 'put':
+ if len(args) != 5:
+ usage()
+ sys.exit(1)
+ print connection.put(*args)
+ elif cmd == 'delete_row':
+ if len(args) != 2:
+ usage()
+ sys.exit(1)
+ print connection.delete_row(*args)
+ elif cmd == 'delete_cells':
+ if len(args) != 3:
+ usage()
+ sys.exit(1)
+ print connection.delete_cellsn(*args)
+ elif cmd == 'scan':
+ if len(args) != 4:
+ usage()
+ sys.exit(1)
+ print connection.scan(*args)
+ else:
+ usage()
+ sys.exit(1)
+
+ connection.close()
+
View
@@ -0,0 +1 @@
+__all__ = ['connection']
Oops, something went wrong.

0 comments on commit 8b85088

Please sign in to comment.