It worked. :)

On Thu, Oct 18, 2012 at 10:54 PM, Ramkrishna.S.Vasudevan <
[email protected]> wrote:

> Ok Anil.. Not a problem.. My intention was to just see if the api was
> working during createtable so that it will help you.
>
> Regards
> Ram
>
> > -----Original Message-----
> > From: anil gupta [mailto:[email protected]]
> > Sent: Friday, October 19, 2012 11:22 AM
> > To: [email protected]
> > Subject: Re: Unable to add co-processor to table through HBase api
> >
> > Thanks a lot Guys. I really appreciate you help. I'll try this change
> > in
> > the morning and let you know the outcome.
> >
> > @Ram: Actually, i was trying to add the coprocessor to a per-existing
> > table. I think yesterday you assumed that I am trying to add the
> > coprocessor while creating the table. That's why there was a confusion
> > between us.
> >
> > On Thu, Oct 18, 2012 at 10:40 PM, Ramkrishna.S.Vasudevan <
> > [email protected]> wrote:
> >
> > > Yes you are right. modifyTable has to be called.
> > >
> > > public class TestClass {
> > >   private static HBaseTestingUtility UTIL = new
> > HBaseTestingUtility();
> > >   @BeforeClass
> > >   public static void setupBeforeClass() throws Exception {
> > >     Configuration conf = UTIL.getConfiguration();
> > >
> > >   }
> > >
> > >   @Before
> > >   public void setUp() throws Exception{
> > >     UTIL.startMiniCluster(1);
> > >   }
> > >
> > >   @Test
> > >   public void testSampe() throws Exception{
> > >     HBaseAdmin admin = UTIL.getHBaseAdmin();
> > >     Configuration conf = UTIL.getConfiguration();
> > >     ZooKeeperWatcher zkw =
> > HBaseTestingUtility.getZooKeeperWatcher(UTIL);
> > >     String userTableName = "testSampe";
> > >     HTableDescriptor htd = new HTableDescriptor(userTableName);
> > >
> > >
> > >
> > //htd.addCoprocessor("org.apache.hadoop.hbase.regionserver.MockRegionOb
> > serve
> > > r");
> > >     HColumnDescriptor hcd = new HColumnDescriptor("col");
> > >     htd.addFamily(hcd);
> > >     admin.createTable(htd);
> > >     ZKAssign.blockUntilNoRIT(zkw);
> > >
> > >     admin.disableTable(userTableName);
> > >
> > >
> > >
> > htd.addCoprocessor("org.apache.hadoop.hbase.regionserver.MockRegionObse
> > rver"
> > > );
> > >     admin.modifyTable(Bytes.toBytes(userTableName), htd);
> > >     admin.enableTable(userTableName);
> > >     HTable table = new HTable(conf, userTableName);
> > >
> > >     HTableDescriptor tableDescriptor =
> > > admin.getTableDescriptor(Bytes.toBytes(userTableName));
> > >     boolean hasCoprocessor =
> > >
> > >
> > tableDescriptor.hasCoprocessor("org.apache.hadoop.hbase.regionserver.Mo
> > ckReg
> > > ionObserver");
> > >     System.out.println(hasCoprocessor);
> > >
> > >
> > >
> > >   }
> > > }
> > >
> > > If you comment the modifyTable() you will not be able to see the
> > > coprocessor
> > > added.
> > > That's what I told in my previous reply itself like try doing this
> > while
> > > createTable itself.  If you want to add it later then its thro modify
> > table
> > > you can do because it involves changes the HTD.
> > >
> > > Regards
> > > Ram
> > >
> > > > -----Original Message-----
> > > > From: anil gupta [mailto:[email protected]]
> > > > Sent: Friday, October 19, 2012 11:02 AM
> > > > To: [email protected]
> > > > Subject: Re: Unable to add co-processor to table through HBase api
> > > >
> > > > Hi Guys,
> > > >
> > > > Do you mean to say that i need to call the following method after
> > the
> > > > call
> > > > to addCoprocessor method:
> > > >
> > > > public void *modifyTable*(byte[] tableName,
> > > >                         HTableDescriptor
> > > >
> > <http://hbase.apache.org/apidocs/org/apache/hadoop/hbase/HTableDescript
> > > > or.html>
> > > > htd)
> > > >                  throws IOException
> > > >
> > <http://download.oracle.com/javase/6/docs/api/java/io/IOException.html?
> > > > is-external=true>
> > > >
> > > >
> > > >
> > http://hbase.apache.org/apidocs/org/apache/hadoop/hbase/client/HBaseAdm
> > > >
> > in.html#modifyTable%28byte[],%20org.apache.hadoop.hbase.HTableDescripto
> > > > r%29
> > > >
> > > > Thanks,
> > > > Anil Gupta
> > > >
> > > > On Thu, Oct 18, 2012 at 10:23 PM, Ramkrishna.S.Vasudevan <
> > > > [email protected]> wrote:
> > > >
> > > > > I can attach the code that I tried.  Here as the HTD is getting
> > > > modified we
> > > > > may need to call modifyTable().
> > > > > My testclass did try this while doing creation of table itself.
> > > > >
> > > > > I will attach shortly.
> > > > >
> > > > > Regards
> > > > > Ram
> > > > >
> > > > > > -----Original Message-----
> > > > > > From: anil gupta [mailto:[email protected]]
> > > > > > Sent: Friday, October 19, 2012 10:29 AM
> > > > > > To: [email protected]
> > > > > > Subject: Re: Unable to add co-processor to table through HBase
> > api
> > > > > >
> > > > > > Hi Anoop,
> > > > > >
> > > > > > Sorry, i am unable to understand what you mean by "have to
> > modify
> > > > the
> > > > > > table
> > > > > > calling Admin API??". Am i missing some other calls in my code?
> > > > > >
> > > > > > Thanks,
> > > > > > Anil Gupta
> > > > > >
> > > > > > On Thu, Oct 18, 2012 at 9:43 PM, Anoop Sam John
> > > > <[email protected]>
> > > > > > wrote:
> > > > > >
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > >
> > > >
> > >hAdmin.getTableDescriptor(Bytes.toBytes(tableName)).addCoprocessor(cla
> > > > > > ssName,
> > > > > > >               new
> > Path("hdfs://hbasecluster/tmp/hbase_cdh4.jar"),
> > > > > > > Coprocessor.PRIORITY_USER,map);
> > > > > > >
> > > > > > > Anil,
> > > > > > >
> > > > > > > Don't you have to modify the table calling Admin API??  !!!!!
> > > > Not
> > > > > > seeing
> > > > > > > that code here...
> > > > > > >
> > > > > > > -Anoop-
> > > > > > >
> > > > > > > ________________________________________
> > > > > > > From: anil gupta [[email protected]]
> > > > > > > Sent: Friday, October 19, 2012 2:46 AM
> > > > > > > To: [email protected]
> > > > > > > Subject: Re: Unable to add co-processor to table through
> > HBase
> > > > api
> > > > > > >
> > > > > > > Hi Folks,
> > > > > > >
> > > > > > > Still, i am unable to add the co-processors through HBase
> > client
> > > > api.
> > > > > > This
> > > > > > > time i tried loading the coprocessor by providing the jar
> > path
> > > > along
> > > > > > with
> > > > > > > parameters. But, it failed.
> > > > > > > I was able to add the same coprocessor to the table through
> > HBase
> > > > > > shell.
> > > > > > > I also dont see any logs regarding adding coprocessors in
> > > > > > regionservers
> > > > > > > when i try to add the co-processor through api.I strongly
> > feel
> > > > that
> > > > > > HBase
> > > > > > > client api for adding coprocessor seems to be broken. Please
> > let
> > > > me
> > > > > > know if
> > > > > > > the code below seems to be problematic.
> > > > > > >
> > > > > > > Here is the code i used to add the coprocessor through HBase
> > api:
> > > > > > >     private static void modifyTable() throws IOException
> > > > > > >     {
> > > > > > >     Configuration conf = HBaseConfiguration.create();
> > > > > > >     HBaseAdmin hAdmin = new HBaseAdmin(conf);
> > > > > > >     String tableName = "txn";
> > > > > > >     hAdmin.disableTable(tableName);
> > > > > > >     if(!hAdmin.isTableEnabled(tableName))
> > > > > > >     {
> > > > > > >       System.out.println("Trying to add coproc to table"); //
> > > > using
> > > > > > err so
> > > > > > > that it's easy to read this on eclipse console.
> > > > > > >       HashMap<String, String> map = new
> > HashMap<String,String>();
> > > > > > >       map.put("arg1", "batchdate");
> > > > > > >       String className =
> > > > > > >
> > > > > >
> > > >
> > "com.intuit.ihub.hbase.poc.coprocessor.observer.IhubTxnRegionObserver";
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > >
> > > >
> > hAdmin.getTableDescriptor(Bytes.toBytes(tableName)).addCoprocessor(clas
> > > > > > sName,
> > > > > > >               new
> > Path("hdfs://hbasecluster/tmp/hbase_cdh4.jar"),
> > > > > > > Coprocessor.PRIORITY_USER,map);
> > > > > > >
> > > > > > >       if(
> > > > > > >
> > > > > > >
> > > > > >
> > > >
> > hAdmin.getTableDescriptor(Bytes.toBytes(tableName)).hasCoprocessor(clas
> > > > > > sName)
> > > > > > >               )
> > > > > > >       {
> > > > > > >         System.err.println("YIPPPPPPPPPIEEEEE!!!!!!!");
> > > > > > >       }
> > > > > > >       hAdmin.enableTable(tableName);
> > > > > > >
> > > > > > >     }
> > > > > > >     hAdmin.close();
> > > > > > >    }
> > > > > > >
> > > > > > > Thanks,
> > > > > > > Anil Gupta
> > > > > > >
> > > > > > > On Wed, Oct 17, 2012 at 9:27 PM, Ramkrishna.S.Vasudevan <
> > > > > > > [email protected]> wrote:
> > > > > > >
> > > > > > > > Do let me know if you are stuck up.  May be I did not get
> > your
> > > > > > actual
> > > > > > > > problem.
> > > > > > > >
> > > > > > > > All the best.
> > > > > > > >
> > > > > > > > Regards
> > > > > > > > Ram
> > > > > > > >
> > > > > > > > > -----Original Message-----
> > > > > > > > > From: anil gupta [mailto:[email protected]]
> > > > > > > > > Sent: Wednesday, October 17, 2012 11:34 PM
> > > > > > > > > To: [email protected]
> > > > > > > > > Subject: Re: Unable to add co-processor to table through
> > > > HBase
> > > > > > api
> > > > > > > > >
> > > > > > > > > Hi Ram,
> > > > > > > > >
> > > > > > > > > The table exists and I don't get any error while running
> > the
> > > > > > program(i
> > > > > > > > > would get an error if the table did not exist). I am
> > running
> > > > a
> > > > > > > > > distributed
> > > > > > > > > cluster.
> > > > > > > > >
> > > > > > > > > Tried following additional ways also:
> > > > > > > > >
> > > > > > > > >    1. I tried loading the AggregationImplementation
> > coproc.
> > > > > > > > >    2. I also tried adding the coprocs while the table is
> > > > enabled.
> > > > > > > > >
> > > > > > > > >
> > > > > > > > > Also had a look at the JUnit test cases and could not
> > find
> > > > any
> > > > > > > > > difference.
> > > > > > > > >
> > > > > > > > > I am going to try adding the coproc along with jar in
> > Hdfs
> > > > and
> > > > > > see what
> > > > > > > > > happens.
> > > > > > > > >
> > > > > > > > > Thanks,
> > > > > > > > > Anil Gupta
> > > > > > > > >
> > > > > > > > > On Tue, Oct 16, 2012 at 11:44 PM, Ramkrishna.S.Vasudevan
> > <
> > > > > > > > > [email protected]> wrote:
> > > > > > > > >
> > > > > > > > > > I tried out a sample test class.  It is working
> > properly.
> > > > I
> > > > > > just
> > > > > > > > > have a
> > > > > > > > > > doubt whether you are doing the
> > > > > > > > > > Htd.addCoprocessor() step before creating the table?
> > Try
> > > > that
> > > > > > way
> > > > > > > > > hope it
> > > > > > > > > > should work.
> > > > > > > > > >
> > > > > > > > > > Regards
> > > > > > > > > > Ram
> > > > > > > > > >
> > > > > > > > > > > -----Original Message-----
> > > > > > > > > > > From: anil gupta [mailto:[email protected]]
> > > > > > > > > > > Sent: Wednesday, October 17, 2012 4:05 AM
> > > > > > > > > > > To: [email protected]
> > > > > > > > > > > Subject: Unable to add co-processor to table through
> > > > HBase
> > > > > > api
> > > > > > > > > > >
> > > > > > > > > > > Hi All,
> > > > > > > > > > >
> > > > > > > > > > > I would like to add a RegionObserver to a HBase table
> > > > through
> > > > > > HBase
> > > > > > > > > > > api. I
> > > > > > > > > > > don't want to put this RegionObserver as a user or
> > system
> > > > co-
> > > > > > > > > processor
> > > > > > > > > > > in
> > > > > > > > > > > hbase-site.xml since this is specific to a table. So,
> > > > option
> > > > > > of
> > > > > > > > > using
> > > > > > > > > > > hbase
> > > > > > > > > > > properties is out. I have already copied the jar file
> > in
> > > > the
> > > > > > > > > classpath
> > > > > > > > > > > of
> > > > > > > > > > > region server and restarted the cluster.
> > > > > > > > > > >
> > > > > > > > > > > Can any one point out the problem in following code
> > for
> > > > > > adding the
> > > > > > > > > > > co-processor to the table:
> > > > > > > > > > >     private void modifyTable(String name) throws
> > > > IOException
> > > > > > > > > > >     {
> > > > > > > > > > >     Configuration conf = HBaseConfiguration.create();
> > > > > > > > > > >     HBaseAdmin hAdmin = new HBaseAdmin(conf);
> > > > > > > > > > >     hAdmin.disableTable("txn_subset");
> > > > > > > > > > >     if(!hAdmin.isTableEnabled("txn_subset"))
> > > > > > > > > > >     {
> > > > > > > > > > >       System.err.println("Trying to add coproc to
> > > > table"); //
> > > > > > using
> > > > > > > > > err
> > > > > > > > > > > so
> > > > > > > > > > > that it's easy to read this on eclipse console.
> > > > > > > > > > >
> > > > > > > > > > >
> > > > > > > > >
> > > > > >
> > > >
> > hAdmin.getTableDescriptor(Bytes.toBytes("txn_subset")).addCoprocessor("
> > > > > > > > > > >
> > > > > >
> > com.intuit.hbase.poc.coprocessor.observer.IhubTxnRegionObserver");
> > > > > > > > > > >       if(
> > > > > > > > > > >
> > > > > > > > >
> > > > > >
> > > >
> > hAdmin.getTableDescriptor(Bytes.toBytes("txn_subset")).hasCoprocessor("
> > > > > > > > > > >
> > > > > >
> > com.intuit.hbase.poc.coprocessor.observer.IhubTxnRegionObserver")
> > > > > > > > > > > )
> > > > > > > > > > >       {
> > > > > > > > > > >
> > System.err.println("YIPPPPPPPPPIEEEEE!!!!!!!");
> > > > > > > > > > >       }
> > > > > > > > > > >       hAdmin.enableTable("ihub_txn_subset");
> > > > > > > > > > >     }
> > > > > > > > > > >     hAdmin.close();
> > > > > > > > > > >         }*
> > > > > > > > > > > *
> > > > > > > > > > > --
> > > > > > > > > > > Thanks & Regards,
> > > > > > > > > > > Anil Gupta
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > >
> > > > > > > > >
> > > > > > > > > --
> > > > > > > > > Thanks & Regards,
> > > > > > > > > Anil Gupta
> > > > > > > >
> > > > > > > >
> > > > > > >
> > > > > > >
> > > > > > > --
> > > > > > > Thanks & Regards,
> > > > > > > Anil Gupta
> > > > > > >
> > > > > >
> > > > > >
> > > > > >
> > > > > > --
> > > > > > Thanks & Regards,
> > > > > > Anil Gupta
> > > > >
> > > > >
> > > >
> > > >
> > > > --
> > > > Thanks & Regards,
> > > > Anil Gupta
> > >
> > >
> >
> >
> > --
> > Thanks & Regards,
> > Anil Gupta
>
>


-- 
Thanks & Regards,
Anil Gupta

Reply via email to