New Contributor
Posts: 4
Registered: ‎08-09-2015

Hbase Java API fails in Cloudera VM

I am working on Cloudera VM 5.4.0 and have created a simple Hbase progran which compiles fine. The program is as below . 


package cloudera.hbase;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.client.*;
import org.apache.hadoop.hbase.util.Bytes;

public class hbaseput {
public static void main(String[] args) throws IOException {
Configuration conf = HBaseConfiguration.create();
HTable table = new HTable(conf, "testtable");
Put put = new Put(Bytes.toBytes("row1"));
put.add(Bytes.toBytes("colfam1"), Bytes.toBytes("qual1"),
put.add(Bytes.toBytes("colfam1"), Bytes.toBytes("qual2"),


I then try to compile the .java file in the Cloudera VM . Hbase is running fine ( checked from the Staus command in Hbase shell ) . Compiling code is as below .


javac -cp `hbase classpath`


Problem is that after running this there is no new table created in Hbase when viewed through the Hbase Shell . It also does not give an error after execution. 







Cloudera Employee Sue
Cloudera Employee
Posts: 44
Registered: ‎09-11-2015

Re: Hbase Java API fails in Cloudera VM

There are changes in HBase 1.0.0 - below is some code that should work for creating and deleting a table.

See slide 34 and on in this slide presentation:


Sample code:



import org.apache.hadoop.conf.Configuration;

import org.apache.hadoop.hbase.HBaseConfiguration;

import org.apache.hadoop.hbase.client.HBaseAdmin;

import org.apache.hadoop.hbase.HTableDescriptor;

import org.apache.hadoop.hbase.TableName;

import org.apache.hadoop.hbase.HColumnDescriptor;

import org.apache.hadoop.hbase.client.HTable;

import org.apache.hadoop.hbase.client.Put;

import org.apache.hadoop.hbase.util.Bytes;

import org.apache.hadoop.hbase.client.Connection;

import org.apache.hadoop.hbase.client.ConnectionFactory;


public class createDeleteTbl {

public static void main (String[] args) throws IOException {


   Configuration configuration = new Configuration();

   Connection conn = ConnectionFactory.createConnection(configuration);

   HBaseAdmin admin = (HBaseAdmin)conn.getAdmin();


   String oneTable = "tstTable";

   HTableDescriptor descriptor = new HTableDescriptor(TableName.valueOf(oneTable));

   HColumnDescriptor columnDescriptor = new HColumnDescriptor(Bytes.toBytes("desc"));



   System.out.println("\nCreating table " + oneTable + "\n");



   HTableDescriptor desc = admin.getTableDescriptor(Bytes.toBytes(oneTable));

   System.out.println("\nDetails about table " + oneTable + "\n");

   System.out.println(desc + "\n");


   System.out.println("Preparing to delete table " + oneTable + "\n");


   System.out.println("... Disabling HBase table: " + oneTable + "\n");


   Boolean isDisabled = admin.isTableDisabled(oneTable);


   if (true == isDisabled) {

     System.out.println("... Table " + oneTable + " successfully disabled.\n");

     System.out.println("... Deleting table " + oneTable + "\n");


     System.out.println("\nTable: " + oneTable + " successfully deleted.\n");


   else {

     System.out.println("ERROR: Table " + oneTable + " disable failed.\n");










HBasecon 2015 presentation for HBase-1.0 and the Client API changes.