You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by st...@apache.org on 2012/11/06 22:22:30 UTC

svn commit: r1406339 [17/17] - in /hbase/trunk: ./ examples/ hbase-examples/ hbase-examples/src/ hbase-examples/src/main/ hbase-examples/src/main/cpp/ hbase-examples/src/main/cpp/gen-cpp/ hbase-examples/src/main/java/ hbase-examples/src/main/java/org/ ...

Added: hbase/trunk/hbase-examples/src/main/ruby/gen-rb/hbase_constants.rb
URL: http://svn.apache.org/viewvc/hbase/trunk/hbase-examples/src/main/ruby/gen-rb/hbase_constants.rb?rev=1406339&view=auto
==============================================================================
--- hbase/trunk/hbase-examples/src/main/ruby/gen-rb/hbase_constants.rb (added)
+++ hbase/trunk/hbase-examples/src/main/ruby/gen-rb/hbase_constants.rb Tue Nov  6 21:22:27 2012
@@ -0,0 +1,17 @@
+#
+# Autogenerated by Thrift Compiler (0.9.0)
+#
+# DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+#
+
+require 'thrift'
+require 'hbase_types'
+
+module Apache
+  module Hadoop
+    module Hbase
+      module Thrift
+      end
+    end
+  end
+end

Added: hbase/trunk/hbase-examples/src/main/ruby/gen-rb/hbase_types.rb
URL: http://svn.apache.org/viewvc/hbase/trunk/hbase-examples/src/main/ruby/gen-rb/hbase_types.rb?rev=1406339&view=auto
==============================================================================
--- hbase/trunk/hbase-examples/src/main/ruby/gen-rb/hbase_types.rb (added)
+++ hbase/trunk/hbase-examples/src/main/ruby/gen-rb/hbase_types.rb Tue Nov  6 21:22:27 2012
@@ -0,0 +1,284 @@
+#
+# Autogenerated by Thrift Compiler (0.9.0)
+#
+# DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+#
+
+require 'thrift'
+
+module Apache
+  module Hadoop
+    module Hbase
+      module Thrift
+        # TCell - Used to transport a cell value (byte[]) and the timestamp it was
+# stored with together as a result for get and getRow methods. This promotes
+# the timestamp of a cell to a first-class value, making it easy to take
+# note of temporal data. Cell is used all the way from HStore up to HTable.
+        class TCell
+          include ::Thrift::Struct, ::Thrift::Struct_Union
+          VALUE = 1
+          TIMESTAMP = 2
+
+          FIELDS = {
+            VALUE => {:type => ::Thrift::Types::STRING, :name => 'value', :binary => true},
+            TIMESTAMP => {:type => ::Thrift::Types::I64, :name => 'timestamp'}
+          }
+
+          def struct_fields; FIELDS; end
+
+          def validate
+          end
+
+          ::Thrift::Struct.generate_accessors self
+        end
+
+        # An HColumnDescriptor contains information about a column family
+# such as the number of versions, compression settings, etc. It is
+# used as input when creating a table or adding a column.
+        class ColumnDescriptor
+          include ::Thrift::Struct, ::Thrift::Struct_Union
+          NAME = 1
+          MAXVERSIONS = 2
+          COMPRESSION = 3
+          INMEMORY = 4
+          BLOOMFILTERTYPE = 5
+          BLOOMFILTERVECTORSIZE = 6
+          BLOOMFILTERNBHASHES = 7
+          BLOCKCACHEENABLED = 8
+          TIMETOLIVE = 9
+
+          FIELDS = {
+            NAME => {:type => ::Thrift::Types::STRING, :name => 'name', :binary => true},
+            MAXVERSIONS => {:type => ::Thrift::Types::I32, :name => 'maxVersions', :default => 3},
+            COMPRESSION => {:type => ::Thrift::Types::STRING, :name => 'compression', :default => %q"NONE"},
+            INMEMORY => {:type => ::Thrift::Types::BOOL, :name => 'inMemory', :default => false},
+            BLOOMFILTERTYPE => {:type => ::Thrift::Types::STRING, :name => 'bloomFilterType', :default => %q"NONE"},
+            BLOOMFILTERVECTORSIZE => {:type => ::Thrift::Types::I32, :name => 'bloomFilterVectorSize', :default => 0},
+            BLOOMFILTERNBHASHES => {:type => ::Thrift::Types::I32, :name => 'bloomFilterNbHashes', :default => 0},
+            BLOCKCACHEENABLED => {:type => ::Thrift::Types::BOOL, :name => 'blockCacheEnabled', :default => false},
+            TIMETOLIVE => {:type => ::Thrift::Types::I32, :name => 'timeToLive', :default => -1}
+          }
+
+          def struct_fields; FIELDS; end
+
+          def validate
+          end
+
+          ::Thrift::Struct.generate_accessors self
+        end
+
+        # A TRegionInfo contains information about an HTable region.
+        class TRegionInfo
+          include ::Thrift::Struct, ::Thrift::Struct_Union
+          STARTKEY = 1
+          ENDKEY = 2
+          ID = 3
+          NAME = 4
+          VERSION = 5
+          SERVERNAME = 6
+          PORT = 7
+
+          FIELDS = {
+            STARTKEY => {:type => ::Thrift::Types::STRING, :name => 'startKey', :binary => true},
+            ENDKEY => {:type => ::Thrift::Types::STRING, :name => 'endKey', :binary => true},
+            ID => {:type => ::Thrift::Types::I64, :name => 'id'},
+            NAME => {:type => ::Thrift::Types::STRING, :name => 'name', :binary => true},
+            VERSION => {:type => ::Thrift::Types::BYTE, :name => 'version'},
+            SERVERNAME => {:type => ::Thrift::Types::STRING, :name => 'serverName', :binary => true},
+            PORT => {:type => ::Thrift::Types::I32, :name => 'port'}
+          }
+
+          def struct_fields; FIELDS; end
+
+          def validate
+          end
+
+          ::Thrift::Struct.generate_accessors self
+        end
+
+        # A Mutation object is used to either update or delete a column-value.
+        class Mutation
+          include ::Thrift::Struct, ::Thrift::Struct_Union
+          ISDELETE = 1
+          COLUMN = 2
+          VALUE = 3
+          WRITETOWAL = 4
+
+          FIELDS = {
+            ISDELETE => {:type => ::Thrift::Types::BOOL, :name => 'isDelete', :default => false},
+            COLUMN => {:type => ::Thrift::Types::STRING, :name => 'column', :binary => true},
+            VALUE => {:type => ::Thrift::Types::STRING, :name => 'value', :binary => true},
+            WRITETOWAL => {:type => ::Thrift::Types::BOOL, :name => 'writeToWAL', :default => true}
+          }
+
+          def struct_fields; FIELDS; end
+
+          def validate
+          end
+
+          ::Thrift::Struct.generate_accessors self
+        end
+
+        # A BatchMutation object is used to apply a number of Mutations to a single row.
+        class BatchMutation
+          include ::Thrift::Struct, ::Thrift::Struct_Union
+          ROW = 1
+          MUTATIONS = 2
+
+          FIELDS = {
+            ROW => {:type => ::Thrift::Types::STRING, :name => 'row', :binary => true},
+            MUTATIONS => {:type => ::Thrift::Types::LIST, :name => 'mutations', :element => {:type => ::Thrift::Types::STRUCT, :class => ::Apache::Hadoop::Hbase::Thrift::Mutation}}
+          }
+
+          def struct_fields; FIELDS; end
+
+          def validate
+          end
+
+          ::Thrift::Struct.generate_accessors self
+        end
+
+        # For increments that are not incrementColumnValue
+# equivalents.
+        class TIncrement
+          include ::Thrift::Struct, ::Thrift::Struct_Union
+          TABLE = 1
+          ROW = 2
+          COLUMN = 3
+          AMMOUNT = 4
+
+          FIELDS = {
+            TABLE => {:type => ::Thrift::Types::STRING, :name => 'table', :binary => true},
+            ROW => {:type => ::Thrift::Types::STRING, :name => 'row', :binary => true},
+            COLUMN => {:type => ::Thrift::Types::STRING, :name => 'column', :binary => true},
+            AMMOUNT => {:type => ::Thrift::Types::I64, :name => 'ammount'}
+          }
+
+          def struct_fields; FIELDS; end
+
+          def validate
+          end
+
+          ::Thrift::Struct.generate_accessors self
+        end
+
+        # Holds row name and then a map of columns to cells.
+        class TRowResult
+          include ::Thrift::Struct, ::Thrift::Struct_Union
+          ROW = 1
+          COLUMNS = 2
+
+          FIELDS = {
+            ROW => {:type => ::Thrift::Types::STRING, :name => 'row', :binary => true},
+            COLUMNS => {:type => ::Thrift::Types::MAP, :name => 'columns', :key => {:type => ::Thrift::Types::STRING, :binary => true}, :value => {:type => ::Thrift::Types::STRUCT, :class => ::Apache::Hadoop::Hbase::Thrift::TCell}}
+          }
+
+          def struct_fields; FIELDS; end
+
+          def validate
+          end
+
+          ::Thrift::Struct.generate_accessors self
+        end
+
+        # A Scan object is used to specify scanner parameters when opening a scanner.
+        class TScan
+          include ::Thrift::Struct, ::Thrift::Struct_Union
+          STARTROW = 1
+          STOPROW = 2
+          TIMESTAMP = 3
+          COLUMNS = 4
+          CACHING = 5
+          FILTERSTRING = 6
+
+          FIELDS = {
+            STARTROW => {:type => ::Thrift::Types::STRING, :name => 'startRow', :binary => true, :optional => true},
+            STOPROW => {:type => ::Thrift::Types::STRING, :name => 'stopRow', :binary => true, :optional => true},
+            TIMESTAMP => {:type => ::Thrift::Types::I64, :name => 'timestamp', :optional => true},
+            COLUMNS => {:type => ::Thrift::Types::LIST, :name => 'columns', :element => {:type => ::Thrift::Types::STRING, :binary => true}, :optional => true},
+            CACHING => {:type => ::Thrift::Types::I32, :name => 'caching', :optional => true},
+            FILTERSTRING => {:type => ::Thrift::Types::STRING, :name => 'filterString', :binary => true, :optional => true}
+          }
+
+          def struct_fields; FIELDS; end
+
+          def validate
+          end
+
+          ::Thrift::Struct.generate_accessors self
+        end
+
+        # An IOError exception signals that an error occurred communicating
+# to the Hbase master or an Hbase region server.  Also used to return
+# more general Hbase error conditions.
+        class IOError < ::Thrift::Exception
+          include ::Thrift::Struct, ::Thrift::Struct_Union
+          def initialize(message=nil)
+            super()
+            self.message = message
+          end
+
+          MESSAGE = 1
+
+          FIELDS = {
+            MESSAGE => {:type => ::Thrift::Types::STRING, :name => 'message'}
+          }
+
+          def struct_fields; FIELDS; end
+
+          def validate
+          end
+
+          ::Thrift::Struct.generate_accessors self
+        end
+
+        # An IllegalArgument exception indicates an illegal or invalid
+# argument was passed into a procedure.
+        class IllegalArgument < ::Thrift::Exception
+          include ::Thrift::Struct, ::Thrift::Struct_Union
+          def initialize(message=nil)
+            super()
+            self.message = message
+          end
+
+          MESSAGE = 1
+
+          FIELDS = {
+            MESSAGE => {:type => ::Thrift::Types::STRING, :name => 'message'}
+          }
+
+          def struct_fields; FIELDS; end
+
+          def validate
+          end
+
+          ::Thrift::Struct.generate_accessors self
+        end
+
+        # An AlreadyExists exceptions signals that a table with the specified
+# name already exists
+        class AlreadyExists < ::Thrift::Exception
+          include ::Thrift::Struct, ::Thrift::Struct_Union
+          def initialize(message=nil)
+            super()
+            self.message = message
+          end
+
+          MESSAGE = 1
+
+          FIELDS = {
+            MESSAGE => {:type => ::Thrift::Types::STRING, :name => 'message'}
+          }
+
+          def struct_fields; FIELDS; end
+
+          def validate
+          end
+
+          ::Thrift::Struct.generate_accessors self
+        end
+
+      end
+    end
+  end
+end

Added: hbase/trunk/hbase-examples/src/main/ruby/index-builder-setup.rb
URL: http://svn.apache.org/viewvc/hbase/trunk/hbase-examples/src/main/ruby/index-builder-setup.rb?rev=1406339&view=auto
==============================================================================
--- hbase/trunk/hbase-examples/src/main/ruby/index-builder-setup.rb (added)
+++ hbase/trunk/hbase-examples/src/main/ruby/index-builder-setup.rb Tue Nov  6 21:22:27 2012
@@ -0,0 +1,31 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Set up sample data for IndexBuilder example
+create "people", "attributes"
+create "people-email", "INDEX"
+create "people-phone", "INDEX"
+create "people-name", "INDEX"
+
+[["1", "jenny", "jenny@example.com", "867-5309"],
+ ["2", "alice", "alice@example.com", "555-1234"],
+ ["3", "kevin", "kevinpet@example.com", "555-1212"]].each do |fields|
+  (id, name, email, phone) = *fields
+  put "people", id, "attributes:name", name
+  put "people", id, "attributes:email", email
+  put "people", id, "attributes:phone", phone
+end
+  

Added: hbase/trunk/hbase-examples/thrift2/DemoClient.java
URL: http://svn.apache.org/viewvc/hbase/trunk/hbase-examples/thrift2/DemoClient.java?rev=1406339&view=auto
==============================================================================
--- hbase/trunk/hbase-examples/thrift2/DemoClient.java (added)
+++ hbase/trunk/hbase-examples/thrift2/DemoClient.java Tue Nov  6 21:22:27 2012
@@ -0,0 +1,89 @@
+/**
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.hadoop.hbase.thrift2;
+
+import java.nio.ByteBuffer;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.hadoop.hbase.thrift2.generated.TColumnValue;
+import org.apache.hadoop.hbase.thrift2.generated.TGet;
+import org.apache.hadoop.hbase.thrift2.generated.THBaseService;
+import org.apache.hadoop.hbase.thrift2.generated.TIOError;
+import org.apache.hadoop.hbase.thrift2.generated.TPut;
+import org.apache.hadoop.hbase.thrift2.generated.TResult;
+import org.apache.thrift.TException;
+import org.apache.thrift.protocol.TBinaryProtocol;
+import org.apache.thrift.protocol.TProtocol;
+import org.apache.thrift.transport.TFramedTransport;
+import org.apache.thrift.transport.TSocket;
+import org.apache.thrift.transport.TTransport;
+
+public class DemoClient {
+  public static void main(String[] args) throws TIOError, TException {
+    System.out.println("Thrift2 Demo");
+    System.out.println("This demo assumes you have a table called \"example\" with a column family called \"family1\"");
+    
+    String host = "localhost";
+    int port = 9090;
+    int timeout = 10000;
+    boolean framed = false;
+
+    TTransport transport = new TSocket(host, port, timeout);
+    if (framed) {
+      transport = new TFramedTransport(transport);
+    }
+    TProtocol protocol = new TBinaryProtocol(transport);
+    // This is our thrift client.
+    THBaseService.Iface client = new THBaseService.Client(protocol);
+
+    // open the transport
+    transport.open();
+    
+    ByteBuffer table = ByteBuffer.wrap("example".getBytes());
+
+    TPut put = new TPut();
+    put.setRow("row1".getBytes());
+
+    TColumnValue columnValue = new TColumnValue();
+    columnValue.setFamily("family1".getBytes());
+    columnValue.setQualifier("qualifier1".getBytes());
+    columnValue.setValue("value1".getBytes());
+    List<TColumnValue> columnValues = new ArrayList<TColumnValue>();
+    columnValues.add(columnValue);
+    put.setColumnValues(columnValues);
+
+    client.put(table, put);
+
+    TGet get = new TGet();
+    get.setRow("row1".getBytes());
+
+    TResult result = client.get(table, get);
+
+    System.out.print("row = " + new String(result.getRow()));
+    for (TColumnValue resultColumnValue : result.getColumnValues()) {
+      System.out.print("family = " + new String(resultColumnValue.getFamily()));
+      System.out.print("qualifier = " + new String(resultColumnValue.getFamily()));
+      System.out.print("value = " + new String(resultColumnValue.getValue()));
+      System.out.print("timestamp = " + resultColumnValue.getTimestamp());
+    }
+    
+    transport.close();
+  }
+}

Added: hbase/trunk/hbase-examples/thrift2/DemoClient.py
URL: http://svn.apache.org/viewvc/hbase/trunk/hbase-examples/thrift2/DemoClient.py?rev=1406339&view=auto
==============================================================================
--- hbase/trunk/hbase-examples/thrift2/DemoClient.py (added)
+++ hbase/trunk/hbase-examples/thrift2/DemoClient.py Tue Nov  6 21:22:27 2012
@@ -0,0 +1,68 @@
+"""
+  
+  Licensed to the Apache Software Foundation (ASF) under one
+  or more contributor license agreements.  See the NOTICE file
+  distributed with this work for additional information
+  regarding copyright ownership.  The ASF licenses this file
+  to you under the Apache License, Version 2.0 (the
+  "License"); you may not use this file except in compliance
+  with the License.  You may obtain a copy of the License at
+  
+     http://www.apache.org/licenses/LICENSE-2.0
+  
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+"""
+# Instructions:
+# 1. Run Thrift to generate the python module hbase
+#    thrift --gen py ../../../src/main/resources/org/apache/hadoop/hbase/thrift2/hbase.thrift
+# 2. Create a directory of your choosing that contains:
+#     a. This file (DemoClient.py).
+#     b. The directory gen-py/hbase (generated by instruction step 1).
+# 3. pip install thrift==0.7.0
+# 4. Create a table call "example", with a family called "family1" using the hbase shell.
+# 5. Start the hbase thrift2 server
+#    bin/hbase thrift2 start
+# 6. Execute {python DemoClient.py}.
+
+from thrift.transport import TTransport
+from thrift.transport import TSocket
+from thrift.transport import THttpClient
+from thrift.protocol import TBinaryProtocol
+
+from hbase import THBaseService
+from hbase.ttypes import *
+
+print "Thrift2 Demo"
+print "This demo assumes you have a table called \"example\" with a column family called \"family1\""
+
+host = "localhost"
+port = 9090
+framed = False
+
+socket = TSocket.TSocket(host, port)
+if framed:
+  transport = TTransport.TFramedTransport(socket)
+else:
+  transport = TTransport.TBufferedTransport(socket)
+protocol = TBinaryProtocol.TBinaryProtocol(transport)
+client = THBaseService.Client(protocol)
+
+transport.open()
+
+table = "example"
+
+put = TPut(row="row1", columnValues=[TColumnValue(family="family1",qualifier="qualifier1",value="value1")])
+print "Putting:", put
+client.put(table, put)
+
+get = TGet(row="row1")
+print "Getting:", get
+result = client.get(table, get)
+
+print "Result:", result
+  
+transport.close()

Modified: hbase/trunk/hbase-server/src/main/resources/org/apache/hadoop/hbase/thrift/Hbase.thrift
URL: http://svn.apache.org/viewvc/hbase/trunk/hbase-server/src/main/resources/org/apache/hadoop/hbase/thrift/Hbase.thrift?rev=1406339&r1=1406338&r2=1406339&view=diff
==============================================================================
--- hbase/trunk/hbase-server/src/main/resources/org/apache/hadoop/hbase/thrift/Hbase.thrift (original)
+++ hbase/trunk/hbase-server/src/main/resources/org/apache/hadoop/hbase/thrift/Hbase.thrift Tue Nov  6 21:22:27 2012
@@ -35,7 +35,7 @@ namespace cpp  apache.hadoop.hbase.thrif
 namespace rb Apache.Hadoop.Hbase.Thrift
 namespace py hbase
 namespace perl Hbase
-
+namespace php Hbase
 //
 // Types
 //

Modified: hbase/trunk/pom.xml
URL: http://svn.apache.org/viewvc/hbase/trunk/pom.xml?rev=1406339&r1=1406338&r2=1406339&view=diff
==============================================================================
--- hbase/trunk/pom.xml (original)
+++ hbase/trunk/pom.xml Tue Nov  6 21:22:27 2012
@@ -55,6 +55,7 @@
     <module>hbase-hadoop-compat</module>
     <module>hbase-common</module>
     <module>hbase-it</module>
+    <module>hbase-examples</module>
   </modules>
   <scm>
     <connection>scm:svn:http://svn.apache.org/repos/asf/hbase/trunk</connection>
@@ -941,6 +942,11 @@
         <type>test-jar</type>
         <scope>test</scope>
       </dependency>
+      <dependency>
+        <artifactId>hbase-examples</artifactId>
+        <groupId>org.apache.hbase</groupId>
+        <version>${project.version}</version>
+      </dependency>
       <!-- General dependencies -->
       <dependency>
         <groupId>io.netty</groupId>

Modified: hbase/trunk/src/assembly/hadoop-one-compat.xml
URL: http://svn.apache.org/viewvc/hbase/trunk/src/assembly/hadoop-one-compat.xml?rev=1406339&r1=1406338&r2=1406339&view=diff
==============================================================================
Binary files - no diff available.

Modified: hbase/trunk/src/assembly/hadoop-two-compat.xml
URL: http://svn.apache.org/viewvc/hbase/trunk/src/assembly/hadoop-two-compat.xml?rev=1406339&r1=1406338&r2=1406339&view=diff
==============================================================================
Binary files - no diff available.