Hi, I tried to give him the jars containing those classes both by java class path and by pig.additional.jars and by REGISTER, all failed. It is even more strange that it already has classes for hbase client and zookeeper but not slf.
Please advice! Thanks, Class path: export CLASSPATH="$(~/tools/hbase-0.98.14-hadoop1/bin/hbase classpath)" Pig script: SET hbase.zookeeper.quorum localhost; -- pig.exec.reducers.max defines the upper bound on the number of reducers (default is 999) SET pig.exec.reducers.max 2; REGISTER /Users/dnmaras/tools/hbase-0.98.14-hadoop1/lib/slf4j-api-1.6.4.jar; REGISTER /Users/dnmaras/tools/hbase-0.98.14-hadoop1/lib/slf4j-log4j12-1.6.4.jar; REGISTER /Users/dnmaras/tools/hbase-0.98.14-hadoop1/lib/zookeeper-3.4.6.jar; daily_rows = LOAD 'hbase://dt_campaign' USING org.apache.pig.backend.hadoop.hbase.HBaseStorage( 'v:clid,v:caid, v:dt, v:dth, v:imo, v:im, v:ex, v:ltr, v:clo, v:cl, v:imcl, v:rev', '-loadKey true -gte ${client}2015${month} -lte ${client}2015${month}Z') AS (rowkey:chararray, clid:chararray, caid:chararray, dt:chararray, imo:double, im:double, ex:double, ltr:double, clo:double, cl:double, imcl:double, rev:double); describe daily_rows; monthly_rows_grp = GROUP daily_rows BY SUBSTRING(dt, 0, 7); describe monthly_rows_grp; monthly_rows = FOREACH monthly_rows_grp GENERATE group as ym, COUNT(daily_rows) as inputrows, CONCAT('M', SUBSTRING(MIN(daily_rows.rowkey), 1, 26)) AS rowkey, MIN(daily_rows.clid) AS clid, MIN(daily_rows.caid) AS caid, SUM(daily_rows.imo) AS imo, SUM(daily_rows.im) AS im, SUM(daily_rows.ex) AS ex, SUM(daily_rows.ltr) AS ltr, SUM(daily_rows.clo) AS clo, SUM(daily_rows.cl) AS cl, SUM(daily_rows.imcl) AS imcl, SUM(daily_rows.rev) AS rev; describe monthly_rows; STORE monthly_rows INTO 'dt_campaign' USING org.apache.pig.backend.hadoop.hbase.HBaseStorage( 'v:ym, v:irows, v:clid, v:caid, v:imo, v:im, v:ex, v:ltr, v:clo, v:cl, v:imcl, v:rev' ); So the slf LoggerFactory is in: REGISTER /Users/dnmaras/tools/hbase-0.98.14-hadoop1/lib/slf4j-api-1.6.4.jar; which is also in the classpath and running java slf.LoggerFactory gives that it does not have main (not that it does not exist). Pig run: rm -f pig*; pig -Dpig.additional.jars=slf4j-api-1.6.4.jar -x local -p month=01 -p client=29 /Users/dnmaras/ds/bcs-batch/modules/bcs-pig/src/main/resources/scripts/granularities.pig; cat pig* 15/10/30 12:13:10 INFO pig.ExecTypeProvider: Trying ExecType : LOCAL 15/10/30 12:13:10 INFO pig.ExecTypeProvider: Picked LOCAL as the ExecType 2015-10-30 12:13:10,381 [main] INFO org.apache.pig.Main - Apache Pig version 0.14.0 (r1640057) compiled Nov 16 2014, 18:01:24 2015-10-30 12:13:10,381 [main] INFO org.apache.pig.Main - Logging error messages to: /private/tmp/pig_1446199990380.log 2015-10-30 12:13:10,443 [main] INFO org.apache.pig.impl.util.Utils - Default bootup file /Users/dnmaras/.pigbootup not found 2015-10-30 12:13:10,495 [main] INFO org.apache.pig.backend.hadoop.executionengine.HExecutionEngine - Connecting to hadoop file system at: file:/// daily_rows: {rowkey: chararray,clid: chararray,caid: chararray,dt: chararray,imo: double,im: double,ex: double,ltr: double,clo: double,cl: double,imcl: double,rev: double} monthly_rows_grp: {group: chararray,daily_rows: {(rowkey: chararray,clid: chararray,caid: chararray,dt: chararray,imo: double,im: double,ex: double,ltr: double,clo: double,cl: double,imcl: double,rev: double)}} monthly_rows: {ym: chararray,inputrows: long,rowkey: chararray,clid: chararray,caid: chararray,imo: double,im: double,ex: double,ltr: double,clo: double,cl: double,imcl: double,rev: double} 2015-10-30 12:13:11,331 [main] ERROR org.apache.hadoop.hbase.mapreduce.TableOutputFormat - java.io.IOException: java.lang.reflect.InvocationTargetException 2015-10-30 12:13:11,334 [main] ERROR org.apache.pig.tools.grunt.Grunt - ERROR 2999: Unexpected internal error. java.io.IOException: java.lang.reflect.InvocationTargetException Details at logfile: /private/tmp/pig_1446199990380.log 2015-10-30 12:13:11,349 [main] INFO org.apache.pig.Main - Pig script completed in 3 seconds and 213 milliseconds (3213 ms) Pig Stack Trace --------------- ERROR 2999: Unexpected internal error. java.io.IOException: java.lang.reflect.InvocationTargetException java.lang.RuntimeException: java.io.IOException: java.lang.reflect.InvocationTargetException at org.apache.hadoop.hbase.mapreduce.TableOutputFormat.setConf(TableOutputFormat.java:211) at org.apache.pig.backend.hadoop.hbase.HBaseStorage.getOutputFormat(HBaseStorage.java:904) at org.apache.pig.newplan.logical.visitor.InputOutputFileValidatorVisitor.visit(InputOutputFileValidatorVisitor.java:69) at org.apache.pig.newplan.logical.relational.LOStore.accept(LOStore.java:66) at org.apache.pig.newplan.DepthFirstWalker.depthFirst(DepthFirstWalker.java:64) at org.apache.pig.newplan.DepthFirstWalker.depthFirst(DepthFirstWalker.java:66) at org.apache.pig.newplan.DepthFirstWalker.depthFirst(DepthFirstWalker.java:66) at org.apache.pig.newplan.DepthFirstWalker.depthFirst(DepthFirstWalker.java:66) at org.apache.pig.newplan.DepthFirstWalker.walk(DepthFirstWalker.java:53) at org.apache.pig.newplan.PlanVisitor.visit(PlanVisitor.java:52) at org.apache.pig.newplan.logical.relational.LogicalPlan.validate(LogicalPlan.java:212) at org.apache.pig.PigServer$Graph.compile(PigServer.java:1767) at org.apache.pig.PigServer$Graph.access$300(PigServer.java:1443) at org.apache.pig.PigServer.execute(PigServer.java:1356) at org.apache.pig.PigServer.executeBatch(PigServer.java:415) at org.apache.pig.PigServer.executeBatch(PigServer.java:398) at org.apache.pig.tools.grunt.GruntParser.executeBatch(GruntParser.java:171) at org.apache.pig.tools.grunt.GruntParser.parseStopOnError(GruntParser.java:234) at org.apache.pig.tools.grunt.GruntParser.parseStopOnError(GruntParser.java:205) at org.apache.pig.tools.grunt.Grunt.exec(Grunt.java:81) at org.apache.pig.Main.run(Main.java:624) at org.apache.pig.Main.main(Main.java:170) Caused by: java.io.IOException: java.lang.reflect.InvocationTargetException at org.apache.hadoop.hbase.client.HConnectionManager.createConnection(HConnectionManager.java:383) at org.apache.hadoop.hbase.client.HConnectionManager.createConnection(HConnectionManager.java:360) at org.apache.hadoop.hbase.client.HConnectionManager.getConnection(HConnectionManager.java:244) at org.apache.hadoop.hbase.client.HTable.<init>(HTable.java:187) at org.apache.hadoop.hbase.client.HTable.<init>(HTable.java:149) at org.apache.hadoop.hbase.mapreduce.TableOutputFormat.setConf(TableOutputFormat.java:206) ... 21 more Caused by: java.lang.reflect.InvocationTargetException at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.lang.reflect.Constructor.newInstance(Constructor.java:408) at org.apache.hadoop.hbase.client.HConnectionManager.createConnection(HConnectionManager.java:381) ... 26 more Caused by: java.lang.NoClassDefFoundError: org/slf4j/LoggerFactory at org.apache.zookeeper.ZooKeeper.<clinit>(ZooKeeper.java:94) at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.<init>(RecoverableZooKeeper.java:112) at org.apache.hadoop.hbase.zookeeper.ZKUtil.connect(ZKUtil.java:132) at org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher.<init>(ZooKeeperWatcher.java:165) at org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher.<init>(ZooKeeperWatcher.java:134) at org.apache.hadoop.hbase.client.ZooKeeperKeepAliveConnection.<init>(ZooKeeperKeepAliveConnection.java:43) at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.getKeepAliveZooKeeperWatcher(HConnectionManager.java:1722) at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getClusterId(ZooKeeperRegistry.java:82) at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.retrieveClusterId(HConnectionManager.java:794) at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.<init>(HConnectionManager.java:627) ... 31 more Caused by: java.lang.ClassNotFoundException: org.slf4j.LoggerFactory at java.net.URLClassLoader$1.run(URLClassLoader.java:372) at java.net.URLClassLoader$1.run(URLClassLoader.java:361) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:360) at java.lang.ClassLoader.loadClass(ClassLoader.java:424) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ... 41 more