SlideShare a Scribd company logo
HBase Programming

        Mani
 mmaniga@yahoo.co.uk
CreateTable
public static int VERSION = 5;

public static void createTable(byte[] tableName,
          byte[][] families,
          int numVersions) throws IOException {

HBaseConfiguration hbaseConfig = new HBaseConfiguration();
HBaseAdmin hbaseAdmin = new HBaseAdmin(hbaseConfig);
HTableDescriptor htableDesc = new HTableDescriptor(tableName);
     for (byte[] family : families) {
          HColumnDescriptor hColumnDescriptor = new HColumnDescriptor(family,
                    numVersions, HColumnDescriptor.DEFAULT_COMPRESSION,
                    HColumnDescriptor.DEFAULT_IN_MEMORY,
                    HColumnDescriptor.DEFAULT_BLOCKCACHE,
                    HColumnDescriptor.DEFAULT_TTL,
                    HColumnDescriptor.DEFAULT_BLOOMFILTER);
          htableDesc.addFamily(hColumnDescriptor);
          }
          hbaseAdmin.createTable(htableDesc);

    }
Table Exists & Get Table Name
public static boolean tableExist(byte[] tableName) throws IOException {
          HBaseConfiguration hbaseConfig = new HBaseConfiguration();
          HBaseAdmin hbaseAdmin = new HBaseAdmin(hbaseConfig);
          return hbaseAdmin.tableExists(tableName);
     }
public static List<String> getTableNames() throws IOException {
          HBaseConfiguration hbaseConfig = new HBaseConfiguration();
          HBaseAdmin hbaseAdmin = new HBaseAdmin(hbaseConfig);

         List<String> tables = new ArrayList<String>();
         for (HTableDescriptor htableDesc : hbaseAdmin.listTables()) {
              printTableDescriptors(htableDesc);
              tables.add(htableDesc.getNameAsString());
         }
         return tables;
     }
public static void printTableDescriptors(HTableDescriptor descriptor) {
          System.out.println("Table name " + descriptor.getNameAsString());
          for (HColumnDescriptor columnDescriptor : descriptor.getColumnFamilies()) {
               System.out.println(columnDescriptor.getNameAsString());
               System.out.println(columnDescriptor.getMaxVersions());
               System.out.println(columnDescriptor.getMinVersions());
          }
     }
Insert Record
public static void insertRecord(HTable htable, byte[] columnFamily,
          boolean createColumnFamily,
          HashMap<String, HashMap<String, String>> creditLogMaps) throws IOException {
          String rowKey;// record key
          HashMap<String, String> columnData;
          if (!columnFamilyExist(htable, columnFamily)) {
               if (!createColumnFamily)
                    return;
               else
                    createColumnFamily(htable, columnFamily, VERSION);
          }
          for (Map.Entry<String, HashMap<String, String>> creditLogMap :
creditLogMaps.entrySet()) {
               rowKey = creditLogMap.getKey();
               columnData = creditLogMap.getValue();
               Put put = new Put(rowKey.getBytes());
               for (Map.Entry<String, String> kv : columnData.entrySet()) {
                    put.add(columnFamily, kv.getKey().getBytes(), kv.getValue()
                    .getBytes());
               }
               htable.put(put);
               System.out.println("Record inserted");
          }
     }
Create Column Family
public static void createColumnFamily(HTable htable,
               byte[] columnFamily,
               int numVersions) throws IOException {

           disableTable(htable.getTableName());

           while (isTableEnabled(htable.getTableName()));// wait untill table is
disabled

           HBaseConfiguration hbaseConfig = new HBaseConfiguration();
           HBaseAdmin hbaseAdmin = new HBaseAdmin(hbaseConfig);

           HColumnDescriptor hColumnDescriptor = new HColumnDescriptor(
                     columnFamily, numVersions,
                     HColumnDescriptor.DEFAULT_COMPRESSION,
                     HColumnDescriptor.DEFAULT_IN_MEMORY,
                     HColumnDescriptor.DEFAULT_BLOCKCACHE,
                     HColumnDescriptor.DEFAULT_TTL,
                     HColumnDescriptor.DEFAULT_BLOOMFILTER);

           hbaseAdmin.addColumn(htable.getTableName(), hColumnDescriptor);

           enableTable(htable.getTableName());
    }
Get Column Family
public static List<String> getColumnFamilies(HTable htable) throws IOException {
          List<String> columnFamilies = new ArrayList<String>();
          for (HColumnDescriptor columnDesc :
htable.getTableDescriptor().getColumnFamilies()) {
               columnFamilies.add(columnDesc.getNameAsString());
          }
          return columnFamilies;
     }

public static boolean columnFamilyExist(HTable htable, byte[] columnFamily)
throws IOException {
          boolean hasColumn = false;
          if (htable.getTableDescriptor().getFamily(columnFamily) != null) {
               hasColumn = true;
          }
          return hasColumn;
     }

public static boolean isTableEnabled(byte[] tableName) throws IOException {
          HBaseConfiguration hbaseConfig = new HBaseConfiguration();
          HBaseAdmin hbaseAdmin = new HBaseAdmin(hbaseConfig);
          System.out.println("Table enabled " + hbaseAdmin.isTableEnabled(tableName));
          return hbaseAdmin.isTableEnabled(tableName);
     }
Enable, Disable & Drop Table
public static void enableTable(byte[] tableName) throws IOException {
          HBaseConfiguration hbaseConfig = new HBaseConfiguration();
          HBaseAdmin hbaseAdmin = new HBaseAdmin(hbaseConfig);
          hbaseAdmin.enableTable(tableName);
     }

    public static void disableTable(byte[] tableName) throws IOException {
         HBaseConfiguration hbaseConfig = new HBaseConfiguration();
         HBaseAdmin hbaseAdmin = new HBaseAdmin(hbaseConfig);
         hbaseAdmin.disableTable(tableName);
         System.out.println("Table " + new String(tableName) + " disabled");
    }

    public static void dropTable(byte[] tableName) throws IOException {
         HBaseConfiguration hbaseConfig = new HBaseConfiguration();
         HBaseAdmin hbaseAdmin = new HBaseAdmin(hbaseConfig);
         hbaseAdmin.deleteTable(tableName);
         System.out.println("Table " + new String(tableName) + " deleted");
    }
Get Table, Get & Delete Record
public static HTable getTable(byte[] tableName) throws IOException {
     HBaseConfiguration hbaseConfig = new HBaseConfiguration();
     HBaseAdmin hbaseAdmin = new HBaseAdmin(hbaseConfig);
     return new HTable(hbaseConfig, tableName);
}

public static void deleteRecord(HTable hTable, String rowKey)
          throws IOException {
     Delete delete = new Delete(rowKey.getBytes());
     hTable.delete(delete);
     System.out.println("Record " + rowKey + " deleted ");
}

public static PResultSet getRecord(HTable hTable, String rowKey,
          String family) throws IOException {
     Get get = new Get(rowKey.getBytes());
     get.addFamily(family.getBytes());
     PResultSet resultSet = new PResultSet(hTable, get);
     return resultSet;
}
Scan Records
•   public static void scanRecords(byte[] startKey, HTable hTable)
•             throws IOException {
•        Scan scan = new Scan(startKey);
•        ResultScanner resultScanner = hTable.getScanner(scan);

•       System.out.println("#########Scan result ################");
•       for (Result result : resultScanner) {
•            System.out.println(">key is " + new String(result.getRow()));
•            for (KeyValue kv : result.raw()) {
•                 System.out.println(new String(kv.getFamily()) + ":"
•                           + new String(kv.getQualifier()) + " = "
•                           + new String(kv.getValue()));
•            }
•       }
•       System.out.println("--------Scan result ends here-------------------");
•   }
Scan Records by Filter
public static void scanRecords(byte[] startKey, HTable hTable, TestFilter testFilter)
throws IOException {
          Scan scan = new Scan(startKey);

         scan.setFilter(testFilter.getFilters());
         ResultScanner resultScanner = hTable.getScanner(scan);
         System.out.println("#########filter scan result ################");
         for (Result result : resultScanner) {
              System.out.println(">key is " + new String(result.getRow()));
              for (KeyValue kv : result.raw()) {
                   System.out.println(new String(kv.getFamily()) + ":"
                             + new String(kv.getQualifier()) + " = "
                             + new String(kv.getValue()));
              }
         }
         System.out.println("--------Scan result ends here-------------------");
    }
Filter Object
class FilterObject {
     String columnFamilyName;
     String columnName;
     String value;
     CompareOp compareOp;

    public FilterObject(String columnFamilyName, String columnName,
              String value, CompareOp compareOp) {
         this.columnFamilyName = columnFamilyName;
         this.columnName = columnName;
         this.value = value;
         this.compareOp = compareOp;
    }
}
Filter Class
class TestFilter {
     private List<FilterObject> filterObjects;
     private FilterList filterList;

    public TestFilter() {
         filterObjects = new ArrayList<FilterObject>();
         filterList = new FilterList();
    }

    public void addFilterObject(FilterObject ft) {
         filterObjects.add(ft);

    }

    public FilterList getFilters() {
         for (FilterObject filterObject : filterObjects) {
              filterList.addFilter(new SingleColumnValueFilter(
                        filterObject.columnFamilyName.getBytes(),
                        filterObject.columnName.getBytes(), filterObject.compareOp,
                        filterObject.value.getBytes()));
         }
         return filterList;
    }

}
ResultSet
class PResultSet {
        private String tableName;
        private String columnFamily;
        private HashMap<String, String> resutlMap;
        private Result rs;

        public PResultSet(HTable hTable, Get get) throws IOException {
               this.rs = hTable.get(get);
               this.tableName = hTable.getTableDescriptor().getNameAsString();
               this.columnFamily = hTable.getTableDescriptor().getColumnFamilies()
                               .toString();
               this.resutlMap = new HashMap<String, String>();
        }

        public String getTableName() {
                return tableName;
        }

        public void setTableName(String tableName) {
                this.tableName = tableName;
        }

Cont…
ResultSet cont….
public String getColumnFamily() {
          return columnFamily;
     }
     public void setColumnFamily(String columnFamily) {
          this.columnFamily = columnFamily;
     }
     public HashMap<String, String> getResutlMap() {
          return resutlMap;
     }
     public void setResutlMap(HashMap<String, String> resutlMap) {
          this.resutlMap = resutlMap;
     }
     public String toString() {
          System.out.println("TableName :" + getTableName());
          System.out.println("ColumnFamily : " + getColumnFamily());
          System.out.println("No Of Rows : " + rs.size());
          for (KeyValue kv : rs.raw()) {
               resutlMap.put(Bytes.toString(kv.getQualifier()),
                         Bytes.toString(kv.getValue()));
          }
          return resutlMap.toString();
     }
}
Testing Code – Create Functions
Create Table Testing:

               String tableName = "TrainingDB";
               String familyName = "CreditLog";

               byte[] tableNameBytes = tableName.getBytes();
               byte[] familyBytes = familyName.getBytes();

               byte[][] columnFamilyByteArray = new byte[][] { familyBytes };

               if (tableExist(tableNameBytes)) {
                    System.out.println("Table exist");
                    disableTable(tableNameBytes);
                    dropTable(tableNameBytes);
               }

               createTable(tableNameBytes, columnFamilyByteArray, 5);
               HTable hTable = getTable(tableNameBytes);
               System.out.println("Successfully created");
               System.out.println("Column exist : "
                         + columnFamilyExist(hTable, familyBytes));
Testing Code – Put
HashMap<String, HashMap<String, String>> creditLogMaps
          = new HashMap<String, HashMap<String, String>>();
          HashMap<String, String> creditLogMap = new HashMap<String, String>();

         creditLogMap.put("Name", "Karthik");
         creditLogMap.put("Age", "36");
         creditLogMap.put("Rating", "Good");
         creditLogMap.put("Limit", "404$");

         String rowKey = "1753-4343-4322-5423";
         creditLogMaps.put(rowKey, creditLogMap);

         creditLogMap = new HashMap<String, String>();

         creditLogMap.put("Name", "Manik");
         creditLogMap.put("Age", "36");
         creditLogMap.put("Rating", "Average");
         creditLogMap.put("Limit", "-2$");

         String rowKey2 = "5557-4343-4322-5422";

         creditLogMaps.put(rowKey2, creditLogMap);

         insertRecord(hTable, familyBytes, false, creditLogMaps);
Testing Code - Put
HashMap<String, String> transLogMap = new HashMap<String, String>();
     transLogMap.put("Date", "23-NOV-2011");
     transLogMap.put("Amount", "$30");
     transLogMap.put("Balance", "$450");
     transLogMap.put("Bank", "Barclays");

    HashMap<String, HashMap<String, String>> transLogMaps
         = new HashMap<String, HashMap<String, String>>();
    transLogMaps.put(rowKey, transLogMap);
    insertRecord(hTable, "TransLog".getBytes(), true, transLogMaps);
Testing Code – List Tables
System.out.println("Tables in HBase");
     for (String name : getTableNames()) {
          System.out.println("# " + name);
          System.out.println("Table columns");
          HTable table = getTable(name.getBytes());
          for (String columnName : getColumnFamilies(table)) {
               System.out.println("- " + columnName);
          }
     }
Testing Code – Get & Scan Records
  System.out.println(getRecord(hTable, rowKey, familyName).toString());
  System.out.println(getRecord(hTable, rowKey, "TransLog").toString());

  scanRecords(rowKey.getBytes(), hTable);

  FilterObject filterObject = new FilterObject(familyName, "Age", "36",
            CompareOp.EQUAL);
  FilterObject filterObject2 = new FilterObject(familyName, "Limit",
            "-2$", CompareOp.EQUAL);

  TestFilter testFilter = new TestFilter();
  testFilter.addFilterObject(filterObject);
  testFilter.addFilterObject(filterObject2);

  scanRecords(rowKey.getBytes(), hTable, testFilter);

  deleteRecord(hTable, rowKey);

  System.out.println("After delete");
  scanRecords(rowKey.getBytes(), hTable);
Happy Coding
– Mani
– mmaniga@yahoo.co.uk

More Related Content

PDF
Pdxpugday2010 pg90
PDF
TDC2016SP - Código funcional em Java: superando o hype
ODP
WorkingWithSlick2.1.0
PDF
mobl presentation @ IHomer
PDF
Spring Data for KSDG 2012/09
PDF
Spock and Geb
PDF
The Ring programming language version 1.8 book - Part 41 of 202
PDF
Everything About PowerShell
Pdxpugday2010 pg90
TDC2016SP - Código funcional em Java: superando o hype
WorkingWithSlick2.1.0
mobl presentation @ IHomer
Spring Data for KSDG 2012/09
Spock and Geb
The Ring programming language version 1.8 book - Part 41 of 202
Everything About PowerShell

What's hot (20)

PDF
Rデバッグあれこれ
PDF
Hidden Treasures of the Python Standard Library
PDF
The Ring programming language version 1.6 book - Part 46 of 189
PDF
はじめてのGroovy
KEY
関数潮流(Function Tendency)
PDF
The Ring programming language version 1.7 book - Part 48 of 196
DOC
Adodb Scripts And Some Sample Scripts[1]
PPT
Tips and Tricks of Developing .NET Application
ODP
Scala 2 + 2 > 4
PPT
Grails - The search is over
PDF
The Ring programming language version 1.4.1 book - Part 13 of 31
PDF
Xlab #1: Advantages of functional programming in Java 8
ODP
Patterns for slick database applications
PDF
The Ring programming language version 1.5.1 book - Part 24 of 180
PDF
The Ring programming language version 1.10 book - Part 54 of 212
PDF
[2019-07] GraphQL in depth (serverside)
PDF
JAVA 8 : Migration et enjeux stratégiques en entreprise
PDF
Groovy ネタ NGK 忘年会2009 ライトニングトーク
PDF
The Ring programming language version 1.5.4 book - Part 44 of 185
PPTX
Joker 2015 - Валеев Тагир - Что же мы измеряем?
Rデバッグあれこれ
Hidden Treasures of the Python Standard Library
The Ring programming language version 1.6 book - Part 46 of 189
はじめてのGroovy
関数潮流(Function Tendency)
The Ring programming language version 1.7 book - Part 48 of 196
Adodb Scripts And Some Sample Scripts[1]
Tips and Tricks of Developing .NET Application
Scala 2 + 2 > 4
Grails - The search is over
The Ring programming language version 1.4.1 book - Part 13 of 31
Xlab #1: Advantages of functional programming in Java 8
Patterns for slick database applications
The Ring programming language version 1.5.1 book - Part 24 of 180
The Ring programming language version 1.10 book - Part 54 of 212
[2019-07] GraphQL in depth (serverside)
JAVA 8 : Migration et enjeux stratégiques en entreprise
Groovy ネタ NGK 忘年会2009 ライトニングトーク
The Ring programming language version 1.5.4 book - Part 44 of 185
Joker 2015 - Валеев Тагир - Что же мы измеряем?
Ad

Similar to H base programming (20)

PPTX
H base introduction & development
PPTX
HBase_-_data_operaet le opérations de calciletions_final.pptx
PPTX
Advance Hive, NoSQL Database (HBase) - Module 7
PPTX
Introduction to Apache HBase, MapR Tables and Security
PPT
Generalized framework for using NoSQL Databases
PPT
Hbase an introduction
PPT
Adding Value to HBase with IBM InfoSphere BigInsights and BigSQL
PPTX
HBase.pptx
PDF
Hbase
PDF
SE2016 Java Valerii Moisieienko "Apache HBase Workshop"
PDF
Valerii Moisieienko Apache hbase workshop
PDF
Apache HBase Workshop
PDF
Big Data: Big SQL and HBase
PPTX
Hspark index conf
PPTX
HBaseCon 2015: Analyzing HBase Data with Apache Hive
PPTX
Database Homework Help
PPTX
Database Homework Help
PDF
003 admin featuresandclients
PDF
Modify the project so tat records are inserted into the random acess.pdf
PDF
DConf 2016 std.database (a proposed interface & implementation)
H base introduction & development
HBase_-_data_operaet le opérations de calciletions_final.pptx
Advance Hive, NoSQL Database (HBase) - Module 7
Introduction to Apache HBase, MapR Tables and Security
Generalized framework for using NoSQL Databases
Hbase an introduction
Adding Value to HBase with IBM InfoSphere BigInsights and BigSQL
HBase.pptx
Hbase
SE2016 Java Valerii Moisieienko "Apache HBase Workshop"
Valerii Moisieienko Apache hbase workshop
Apache HBase Workshop
Big Data: Big SQL and HBase
Hspark index conf
HBaseCon 2015: Analyzing HBase Data with Apache Hive
Database Homework Help
Database Homework Help
003 admin featuresandclients
Modify the project so tat records are inserted into the random acess.pdf
DConf 2016 std.database (a proposed interface & implementation)
Ad

Recently uploaded (20)

PDF
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
PDF
Spectral efficient network and resource selection model in 5G networks
PDF
Reach Out and Touch Someone: Haptics and Empathic Computing
PPTX
Digital-Transformation-Roadmap-for-Companies.pptx
DOCX
The AUB Centre for AI in Media Proposal.docx
PPT
“AI and Expert System Decision Support & Business Intelligence Systems”
PDF
NewMind AI Weekly Chronicles - August'25 Week I
PDF
Empathic Computing: Creating Shared Understanding
PDF
Dropbox Q2 2025 Financial Results & Investor Presentation
PDF
Advanced methodologies resolving dimensionality complications for autism neur...
PDF
Machine learning based COVID-19 study performance prediction
PPTX
Understanding_Digital_Forensics_Presentation.pptx
PDF
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
PPTX
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
PDF
KodekX | Application Modernization Development
PDF
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
PDF
Building Integrated photovoltaic BIPV_UPV.pdf
PDF
Agricultural_Statistics_at_a_Glance_2022_0.pdf
PPTX
Cloud computing and distributed systems.
PPT
Teaching material agriculture food technology
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
Spectral efficient network and resource selection model in 5G networks
Reach Out and Touch Someone: Haptics and Empathic Computing
Digital-Transformation-Roadmap-for-Companies.pptx
The AUB Centre for AI in Media Proposal.docx
“AI and Expert System Decision Support & Business Intelligence Systems”
NewMind AI Weekly Chronicles - August'25 Week I
Empathic Computing: Creating Shared Understanding
Dropbox Q2 2025 Financial Results & Investor Presentation
Advanced methodologies resolving dimensionality complications for autism neur...
Machine learning based COVID-19 study performance prediction
Understanding_Digital_Forensics_Presentation.pptx
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
KodekX | Application Modernization Development
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
Building Integrated photovoltaic BIPV_UPV.pdf
Agricultural_Statistics_at_a_Glance_2022_0.pdf
Cloud computing and distributed systems.
Teaching material agriculture food technology

H base programming

  • 1. HBase Programming Mani mmaniga@yahoo.co.uk
  • 2. CreateTable public static int VERSION = 5; public static void createTable(byte[] tableName, byte[][] families, int numVersions) throws IOException { HBaseConfiguration hbaseConfig = new HBaseConfiguration(); HBaseAdmin hbaseAdmin = new HBaseAdmin(hbaseConfig); HTableDescriptor htableDesc = new HTableDescriptor(tableName); for (byte[] family : families) { HColumnDescriptor hColumnDescriptor = new HColumnDescriptor(family, numVersions, HColumnDescriptor.DEFAULT_COMPRESSION, HColumnDescriptor.DEFAULT_IN_MEMORY, HColumnDescriptor.DEFAULT_BLOCKCACHE, HColumnDescriptor.DEFAULT_TTL, HColumnDescriptor.DEFAULT_BLOOMFILTER); htableDesc.addFamily(hColumnDescriptor); } hbaseAdmin.createTable(htableDesc); }
  • 3. Table Exists & Get Table Name public static boolean tableExist(byte[] tableName) throws IOException { HBaseConfiguration hbaseConfig = new HBaseConfiguration(); HBaseAdmin hbaseAdmin = new HBaseAdmin(hbaseConfig); return hbaseAdmin.tableExists(tableName); } public static List<String> getTableNames() throws IOException { HBaseConfiguration hbaseConfig = new HBaseConfiguration(); HBaseAdmin hbaseAdmin = new HBaseAdmin(hbaseConfig); List<String> tables = new ArrayList<String>(); for (HTableDescriptor htableDesc : hbaseAdmin.listTables()) { printTableDescriptors(htableDesc); tables.add(htableDesc.getNameAsString()); } return tables; } public static void printTableDescriptors(HTableDescriptor descriptor) { System.out.println("Table name " + descriptor.getNameAsString()); for (HColumnDescriptor columnDescriptor : descriptor.getColumnFamilies()) { System.out.println(columnDescriptor.getNameAsString()); System.out.println(columnDescriptor.getMaxVersions()); System.out.println(columnDescriptor.getMinVersions()); } }
  • 4. Insert Record public static void insertRecord(HTable htable, byte[] columnFamily, boolean createColumnFamily, HashMap<String, HashMap<String, String>> creditLogMaps) throws IOException { String rowKey;// record key HashMap<String, String> columnData; if (!columnFamilyExist(htable, columnFamily)) { if (!createColumnFamily) return; else createColumnFamily(htable, columnFamily, VERSION); } for (Map.Entry<String, HashMap<String, String>> creditLogMap : creditLogMaps.entrySet()) { rowKey = creditLogMap.getKey(); columnData = creditLogMap.getValue(); Put put = new Put(rowKey.getBytes()); for (Map.Entry<String, String> kv : columnData.entrySet()) { put.add(columnFamily, kv.getKey().getBytes(), kv.getValue() .getBytes()); } htable.put(put); System.out.println("Record inserted"); } }
  • 5. Create Column Family public static void createColumnFamily(HTable htable, byte[] columnFamily, int numVersions) throws IOException { disableTable(htable.getTableName()); while (isTableEnabled(htable.getTableName()));// wait untill table is disabled HBaseConfiguration hbaseConfig = new HBaseConfiguration(); HBaseAdmin hbaseAdmin = new HBaseAdmin(hbaseConfig); HColumnDescriptor hColumnDescriptor = new HColumnDescriptor( columnFamily, numVersions, HColumnDescriptor.DEFAULT_COMPRESSION, HColumnDescriptor.DEFAULT_IN_MEMORY, HColumnDescriptor.DEFAULT_BLOCKCACHE, HColumnDescriptor.DEFAULT_TTL, HColumnDescriptor.DEFAULT_BLOOMFILTER); hbaseAdmin.addColumn(htable.getTableName(), hColumnDescriptor); enableTable(htable.getTableName()); }
  • 6. Get Column Family public static List<String> getColumnFamilies(HTable htable) throws IOException { List<String> columnFamilies = new ArrayList<String>(); for (HColumnDescriptor columnDesc : htable.getTableDescriptor().getColumnFamilies()) { columnFamilies.add(columnDesc.getNameAsString()); } return columnFamilies; } public static boolean columnFamilyExist(HTable htable, byte[] columnFamily) throws IOException { boolean hasColumn = false; if (htable.getTableDescriptor().getFamily(columnFamily) != null) { hasColumn = true; } return hasColumn; } public static boolean isTableEnabled(byte[] tableName) throws IOException { HBaseConfiguration hbaseConfig = new HBaseConfiguration(); HBaseAdmin hbaseAdmin = new HBaseAdmin(hbaseConfig); System.out.println("Table enabled " + hbaseAdmin.isTableEnabled(tableName)); return hbaseAdmin.isTableEnabled(tableName); }
  • 7. Enable, Disable & Drop Table public static void enableTable(byte[] tableName) throws IOException { HBaseConfiguration hbaseConfig = new HBaseConfiguration(); HBaseAdmin hbaseAdmin = new HBaseAdmin(hbaseConfig); hbaseAdmin.enableTable(tableName); } public static void disableTable(byte[] tableName) throws IOException { HBaseConfiguration hbaseConfig = new HBaseConfiguration(); HBaseAdmin hbaseAdmin = new HBaseAdmin(hbaseConfig); hbaseAdmin.disableTable(tableName); System.out.println("Table " + new String(tableName) + " disabled"); } public static void dropTable(byte[] tableName) throws IOException { HBaseConfiguration hbaseConfig = new HBaseConfiguration(); HBaseAdmin hbaseAdmin = new HBaseAdmin(hbaseConfig); hbaseAdmin.deleteTable(tableName); System.out.println("Table " + new String(tableName) + " deleted"); }
  • 8. Get Table, Get & Delete Record public static HTable getTable(byte[] tableName) throws IOException { HBaseConfiguration hbaseConfig = new HBaseConfiguration(); HBaseAdmin hbaseAdmin = new HBaseAdmin(hbaseConfig); return new HTable(hbaseConfig, tableName); } public static void deleteRecord(HTable hTable, String rowKey) throws IOException { Delete delete = new Delete(rowKey.getBytes()); hTable.delete(delete); System.out.println("Record " + rowKey + " deleted "); } public static PResultSet getRecord(HTable hTable, String rowKey, String family) throws IOException { Get get = new Get(rowKey.getBytes()); get.addFamily(family.getBytes()); PResultSet resultSet = new PResultSet(hTable, get); return resultSet; }
  • 9. Scan Records • public static void scanRecords(byte[] startKey, HTable hTable) • throws IOException { • Scan scan = new Scan(startKey); • ResultScanner resultScanner = hTable.getScanner(scan); • System.out.println("#########Scan result ################"); • for (Result result : resultScanner) { • System.out.println(">key is " + new String(result.getRow())); • for (KeyValue kv : result.raw()) { • System.out.println(new String(kv.getFamily()) + ":" • + new String(kv.getQualifier()) + " = " • + new String(kv.getValue())); • } • } • System.out.println("--------Scan result ends here-------------------"); • }
  • 10. Scan Records by Filter public static void scanRecords(byte[] startKey, HTable hTable, TestFilter testFilter) throws IOException { Scan scan = new Scan(startKey); scan.setFilter(testFilter.getFilters()); ResultScanner resultScanner = hTable.getScanner(scan); System.out.println("#########filter scan result ################"); for (Result result : resultScanner) { System.out.println(">key is " + new String(result.getRow())); for (KeyValue kv : result.raw()) { System.out.println(new String(kv.getFamily()) + ":" + new String(kv.getQualifier()) + " = " + new String(kv.getValue())); } } System.out.println("--------Scan result ends here-------------------"); }
  • 11. Filter Object class FilterObject { String columnFamilyName; String columnName; String value; CompareOp compareOp; public FilterObject(String columnFamilyName, String columnName, String value, CompareOp compareOp) { this.columnFamilyName = columnFamilyName; this.columnName = columnName; this.value = value; this.compareOp = compareOp; } }
  • 12. Filter Class class TestFilter { private List<FilterObject> filterObjects; private FilterList filterList; public TestFilter() { filterObjects = new ArrayList<FilterObject>(); filterList = new FilterList(); } public void addFilterObject(FilterObject ft) { filterObjects.add(ft); } public FilterList getFilters() { for (FilterObject filterObject : filterObjects) { filterList.addFilter(new SingleColumnValueFilter( filterObject.columnFamilyName.getBytes(), filterObject.columnName.getBytes(), filterObject.compareOp, filterObject.value.getBytes())); } return filterList; } }
  • 13. ResultSet class PResultSet { private String tableName; private String columnFamily; private HashMap<String, String> resutlMap; private Result rs; public PResultSet(HTable hTable, Get get) throws IOException { this.rs = hTable.get(get); this.tableName = hTable.getTableDescriptor().getNameAsString(); this.columnFamily = hTable.getTableDescriptor().getColumnFamilies() .toString(); this.resutlMap = new HashMap<String, String>(); } public String getTableName() { return tableName; } public void setTableName(String tableName) { this.tableName = tableName; } Cont…
  • 14. ResultSet cont…. public String getColumnFamily() { return columnFamily; } public void setColumnFamily(String columnFamily) { this.columnFamily = columnFamily; } public HashMap<String, String> getResutlMap() { return resutlMap; } public void setResutlMap(HashMap<String, String> resutlMap) { this.resutlMap = resutlMap; } public String toString() { System.out.println("TableName :" + getTableName()); System.out.println("ColumnFamily : " + getColumnFamily()); System.out.println("No Of Rows : " + rs.size()); for (KeyValue kv : rs.raw()) { resutlMap.put(Bytes.toString(kv.getQualifier()), Bytes.toString(kv.getValue())); } return resutlMap.toString(); } }
  • 15. Testing Code – Create Functions Create Table Testing: String tableName = "TrainingDB"; String familyName = "CreditLog"; byte[] tableNameBytes = tableName.getBytes(); byte[] familyBytes = familyName.getBytes(); byte[][] columnFamilyByteArray = new byte[][] { familyBytes }; if (tableExist(tableNameBytes)) { System.out.println("Table exist"); disableTable(tableNameBytes); dropTable(tableNameBytes); } createTable(tableNameBytes, columnFamilyByteArray, 5); HTable hTable = getTable(tableNameBytes); System.out.println("Successfully created"); System.out.println("Column exist : " + columnFamilyExist(hTable, familyBytes));
  • 16. Testing Code – Put HashMap<String, HashMap<String, String>> creditLogMaps = new HashMap<String, HashMap<String, String>>(); HashMap<String, String> creditLogMap = new HashMap<String, String>(); creditLogMap.put("Name", "Karthik"); creditLogMap.put("Age", "36"); creditLogMap.put("Rating", "Good"); creditLogMap.put("Limit", "404$"); String rowKey = "1753-4343-4322-5423"; creditLogMaps.put(rowKey, creditLogMap); creditLogMap = new HashMap<String, String>(); creditLogMap.put("Name", "Manik"); creditLogMap.put("Age", "36"); creditLogMap.put("Rating", "Average"); creditLogMap.put("Limit", "-2$"); String rowKey2 = "5557-4343-4322-5422"; creditLogMaps.put(rowKey2, creditLogMap); insertRecord(hTable, familyBytes, false, creditLogMaps);
  • 17. Testing Code - Put HashMap<String, String> transLogMap = new HashMap<String, String>(); transLogMap.put("Date", "23-NOV-2011"); transLogMap.put("Amount", "$30"); transLogMap.put("Balance", "$450"); transLogMap.put("Bank", "Barclays"); HashMap<String, HashMap<String, String>> transLogMaps = new HashMap<String, HashMap<String, String>>(); transLogMaps.put(rowKey, transLogMap); insertRecord(hTable, "TransLog".getBytes(), true, transLogMaps);
  • 18. Testing Code – List Tables System.out.println("Tables in HBase"); for (String name : getTableNames()) { System.out.println("# " + name); System.out.println("Table columns"); HTable table = getTable(name.getBytes()); for (String columnName : getColumnFamilies(table)) { System.out.println("- " + columnName); } }
  • 19. Testing Code – Get & Scan Records System.out.println(getRecord(hTable, rowKey, familyName).toString()); System.out.println(getRecord(hTable, rowKey, "TransLog").toString()); scanRecords(rowKey.getBytes(), hTable); FilterObject filterObject = new FilterObject(familyName, "Age", "36", CompareOp.EQUAL); FilterObject filterObject2 = new FilterObject(familyName, "Limit", "-2$", CompareOp.EQUAL); TestFilter testFilter = new TestFilter(); testFilter.addFilterObject(filterObject); testFilter.addFilterObject(filterObject2); scanRecords(rowKey.getBytes(), hTable, testFilter); deleteRecord(hTable, rowKey); System.out.println("After delete"); scanRecords(rowKey.getBytes(), hTable);
  • 20. Happy Coding – Mani – mmaniga@yahoo.co.uk