SlideShare uma empresa Scribd logo
1 de 20
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

Mais conteúdo relacionado

Mais procurados

Rデバッグあれこれ
RデバッグあれこれRデバッグあれこれ
RデバッグあれこれTakeshi Arabiki
 
Hidden Treasures of the Python Standard Library
Hidden Treasures of the Python Standard LibraryHidden Treasures of the Python Standard Library
Hidden Treasures of the Python Standard Librarydoughellmann
 
The Ring programming language version 1.6 book - Part 46 of 189
The Ring programming language version 1.6 book - Part 46 of 189The Ring programming language version 1.6 book - Part 46 of 189
The Ring programming language version 1.6 book - Part 46 of 189Mahmoud Samir Fayed
 
関数潮流(Function Tendency)
関数潮流(Function Tendency)関数潮流(Function Tendency)
関数潮流(Function Tendency)riue
 
The Ring programming language version 1.7 book - Part 48 of 196
The Ring programming language version 1.7 book - Part 48 of 196The Ring programming language version 1.7 book - Part 48 of 196
The Ring programming language version 1.7 book - Part 48 of 196Mahmoud Samir Fayed
 
Adodb Scripts And Some Sample Scripts[1]
Adodb Scripts And Some Sample Scripts[1]Adodb Scripts And Some Sample Scripts[1]
Adodb Scripts And Some Sample Scripts[1]User1test
 
Tips and Tricks of Developing .NET Application
Tips and Tricks of Developing .NET ApplicationTips and Tricks of Developing .NET Application
Tips and Tricks of Developing .NET ApplicationJoni
 
Grails - The search is over
Grails - The search is overGrails - The search is over
Grails - The search is overFelipe Coutinho
 
The Ring programming language version 1.4.1 book - Part 13 of 31
The Ring programming language version 1.4.1 book - Part 13 of 31The Ring programming language version 1.4.1 book - Part 13 of 31
The Ring programming language version 1.4.1 book - Part 13 of 31Mahmoud Samir Fayed
 
Xlab #1: Advantages of functional programming in Java 8
Xlab #1: Advantages of functional programming in Java 8Xlab #1: Advantages of functional programming in Java 8
Xlab #1: Advantages of functional programming in Java 8XSolve
 
Patterns for slick database applications
Patterns for slick database applicationsPatterns for slick database applications
Patterns for slick database applicationsSkills Matter
 
The Ring programming language version 1.5.1 book - Part 24 of 180
The Ring programming language version 1.5.1 book - Part 24 of 180The Ring programming language version 1.5.1 book - Part 24 of 180
The Ring programming language version 1.5.1 book - Part 24 of 180Mahmoud Samir Fayed
 
The Ring programming language version 1.10 book - Part 54 of 212
The Ring programming language version 1.10 book - Part 54 of 212The Ring programming language version 1.10 book - Part 54 of 212
The Ring programming language version 1.10 book - Part 54 of 212Mahmoud Samir Fayed
 
[2019-07] GraphQL in depth (serverside)
[2019-07] GraphQL in depth (serverside)[2019-07] GraphQL in depth (serverside)
[2019-07] GraphQL in depth (serverside)croquiscom
 
JAVA 8 : Migration et enjeux stratégiques en entreprise
JAVA 8 : Migration et enjeux stratégiques en entrepriseJAVA 8 : Migration et enjeux stratégiques en entreprise
JAVA 8 : Migration et enjeux stratégiques en entrepriseSOAT
 
Groovy ネタ NGK 忘年会2009 ライトニングトーク
Groovy ネタ NGK 忘年会2009 ライトニングトークGroovy ネタ NGK 忘年会2009 ライトニングトーク
Groovy ネタ NGK 忘年会2009 ライトニングトークTsuyoshi Yamamoto
 
The Ring programming language version 1.5.4 book - Part 44 of 185
The Ring programming language version 1.5.4 book - Part 44 of 185The Ring programming language version 1.5.4 book - Part 44 of 185
The Ring programming language version 1.5.4 book - Part 44 of 185Mahmoud Samir Fayed
 
Joker 2015 - Валеев Тагир - Что же мы измеряем?
Joker 2015 - Валеев Тагир - Что же мы измеряем?Joker 2015 - Валеев Тагир - Что же мы измеряем?
Joker 2015 - Валеев Тагир - Что же мы измеряем?tvaleev
 

Mais procurados (20)

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

Semelhante a H base programming

JEEConf 2017 - Having fun with Javassist
JEEConf 2017 - Having fun with JavassistJEEConf 2017 - Having fun with Javassist
JEEConf 2017 - Having fun with JavassistAnton Arhipov
 
Kamil Chmielewski, Jacek Juraszek - "Hadoop. W poszukiwaniu złotego młotka."
Kamil Chmielewski, Jacek Juraszek - "Hadoop. W poszukiwaniu złotego młotka."Kamil Chmielewski, Jacek Juraszek - "Hadoop. W poszukiwaniu złotego młotka."
Kamil Chmielewski, Jacek Juraszek - "Hadoop. W poszukiwaniu złotego młotka."sjabs
 
apache tajo 연동 개발 후기
apache tajo 연동 개발 후기apache tajo 연동 개발 후기
apache tajo 연동 개발 후기효근 박
 
JJUG CCC 2011 Spring
JJUG CCC 2011 SpringJJUG CCC 2011 Spring
JJUG CCC 2011 SpringKiyotaka Oku
 
LECTURE 2 MORE TYPES, METHODS, CONDITIONALS.pdf
LECTURE 2 MORE TYPES, METHODS, CONDITIONALS.pdfLECTURE 2 MORE TYPES, METHODS, CONDITIONALS.pdf
LECTURE 2 MORE TYPES, METHODS, CONDITIONALS.pdfShashikantSathe3
 
JavaOne 2015 - Having fun with Javassist
JavaOne 2015 - Having fun with JavassistJavaOne 2015 - Having fun with Javassist
JavaOne 2015 - Having fun with JavassistAnton Arhipov
 
Store and Process Big Data with Hadoop and Cassandra
Store and Process Big Data with Hadoop and CassandraStore and Process Big Data with Hadoop and Cassandra
Store and Process Big Data with Hadoop and CassandraDeependra Ariyadewa
 
Riga Dev Day 2016 - Having fun with Javassist
Riga Dev Day 2016 - Having fun with JavassistRiga Dev Day 2016 - Having fun with Javassist
Riga Dev Day 2016 - Having fun with JavassistAnton Arhipov
 
Java 8 Puzzlers [as presented at OSCON 2016]
Java 8 Puzzlers [as presented at  OSCON 2016]Java 8 Puzzlers [as presented at  OSCON 2016]
Java 8 Puzzlers [as presented at OSCON 2016]Baruch Sadogursky
 
HelsinkiJS meet-up. Dmitry Soshnikov - ECMAScript 6
HelsinkiJS meet-up. Dmitry Soshnikov - ECMAScript 6HelsinkiJS meet-up. Dmitry Soshnikov - ECMAScript 6
HelsinkiJS meet-up. Dmitry Soshnikov - ECMAScript 6Dmitry Soshnikov
 
Answer this question for quality assurance. Include a final applicat.pdf
Answer this question for quality assurance. Include a final applicat.pdfAnswer this question for quality assurance. Include a final applicat.pdf
Answer this question for quality assurance. Include a final applicat.pdfakanshanawal
 
Cascading Through Hadoop for the Boulder JUG
Cascading Through Hadoop for the Boulder JUGCascading Through Hadoop for the Boulder JUG
Cascading Through Hadoop for the Boulder JUGMatthew McCullough
 
ES6 patterns in the wild
ES6 patterns in the wildES6 patterns in the wild
ES6 patterns in the wildJoe Morgan
 
AJUG April 2011 Cascading example
AJUG April 2011 Cascading exampleAJUG April 2011 Cascading example
AJUG April 2011 Cascading exampleChristopher Curtin
 
  package Chapter_20;import ToolKit.PostfixNotation;import javaf.pdf
  package Chapter_20;import ToolKit.PostfixNotation;import javaf.pdf  package Chapter_20;import ToolKit.PostfixNotation;import javaf.pdf
  package Chapter_20;import ToolKit.PostfixNotation;import javaf.pdfsudhirchourasia86
 
TypeScript Introduction
TypeScript IntroductionTypeScript Introduction
TypeScript IntroductionDmitry Sheiko
 
code for quiz in my sql
code for quiz  in my sql code for quiz  in my sql
code for quiz in my sql JOYITAKUNDU1
 
Productive Programming in Groovy
Productive Programming in GroovyProductive Programming in Groovy
Productive Programming in GroovyGanesh Samarthyam
 

Semelhante a H base programming (20)

JEEConf 2017 - Having fun with Javassist
JEEConf 2017 - Having fun with JavassistJEEConf 2017 - Having fun with Javassist
JEEConf 2017 - Having fun with Javassist
 
Kamil Chmielewski, Jacek Juraszek - "Hadoop. W poszukiwaniu złotego młotka."
Kamil Chmielewski, Jacek Juraszek - "Hadoop. W poszukiwaniu złotego młotka."Kamil Chmielewski, Jacek Juraszek - "Hadoop. W poszukiwaniu złotego młotka."
Kamil Chmielewski, Jacek Juraszek - "Hadoop. W poszukiwaniu złotego młotka."
 
apache tajo 연동 개발 후기
apache tajo 연동 개발 후기apache tajo 연동 개발 후기
apache tajo 연동 개발 후기
 
JJUG CCC 2011 Spring
JJUG CCC 2011 SpringJJUG CCC 2011 Spring
JJUG CCC 2011 Spring
 
LECTURE 2 MORE TYPES, METHODS, CONDITIONALS.pdf
LECTURE 2 MORE TYPES, METHODS, CONDITIONALS.pdfLECTURE 2 MORE TYPES, METHODS, CONDITIONALS.pdf
LECTURE 2 MORE TYPES, METHODS, CONDITIONALS.pdf
 
JavaOne 2015 - Having fun with Javassist
JavaOne 2015 - Having fun with JavassistJavaOne 2015 - Having fun with Javassist
JavaOne 2015 - Having fun with Javassist
 
Store and Process Big Data with Hadoop and Cassandra
Store and Process Big Data with Hadoop and CassandraStore and Process Big Data with Hadoop and Cassandra
Store and Process Big Data with Hadoop and Cassandra
 
Riga Dev Day 2016 - Having fun with Javassist
Riga Dev Day 2016 - Having fun with JavassistRiga Dev Day 2016 - Having fun with Javassist
Riga Dev Day 2016 - Having fun with Javassist
 
Java 8 Puzzlers [as presented at OSCON 2016]
Java 8 Puzzlers [as presented at  OSCON 2016]Java 8 Puzzlers [as presented at  OSCON 2016]
Java 8 Puzzlers [as presented at OSCON 2016]
 
HelsinkiJS meet-up. Dmitry Soshnikov - ECMAScript 6
HelsinkiJS meet-up. Dmitry Soshnikov - ECMAScript 6HelsinkiJS meet-up. Dmitry Soshnikov - ECMAScript 6
HelsinkiJS meet-up. Dmitry Soshnikov - ECMAScript 6
 
Answer this question for quality assurance. Include a final applicat.pdf
Answer this question for quality assurance. Include a final applicat.pdfAnswer this question for quality assurance. Include a final applicat.pdf
Answer this question for quality assurance. Include a final applicat.pdf
 
Cascading Through Hadoop for the Boulder JUG
Cascading Through Hadoop for the Boulder JUGCascading Through Hadoop for the Boulder JUG
Cascading Through Hadoop for the Boulder JUG
 
Scala in practice
Scala in practiceScala in practice
Scala in practice
 
ES6 patterns in the wild
ES6 patterns in the wildES6 patterns in the wild
ES6 patterns in the wild
 
AJUG April 2011 Cascading example
AJUG April 2011 Cascading exampleAJUG April 2011 Cascading example
AJUG April 2011 Cascading example
 
  package Chapter_20;import ToolKit.PostfixNotation;import javaf.pdf
  package Chapter_20;import ToolKit.PostfixNotation;import javaf.pdf  package Chapter_20;import ToolKit.PostfixNotation;import javaf.pdf
  package Chapter_20;import ToolKit.PostfixNotation;import javaf.pdf
 
TypeScript Introduction
TypeScript IntroductionTypeScript Introduction
TypeScript Introduction
 
Clean coding-practices
Clean coding-practicesClean coding-practices
Clean coding-practices
 
code for quiz in my sql
code for quiz  in my sql code for quiz  in my sql
code for quiz in my sql
 
Productive Programming in Groovy
Productive Programming in GroovyProductive Programming in Groovy
Productive Programming in Groovy
 

Último

The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...gurkirankumar98700
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEarley Information Science
 

Último (20)

The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 

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