hadoop - How to export a Hbase table using Java? -


i want export hbase table hdfs filesystem using java. tried using org.apache.hadoop.hbase.mapreduce.export.createsubmittablejob() method create hbase job. passed 2 arguments, 1-hbase configuration, 2-string array table name , backup.

but, when run code getting weird exception this

caused by:

java.lang.verifyerror: bad type on operand stack|exception details:|  location:|    org/apache/hadoop/hbase/mapreduce/export.getexportfilter([ljava/lang/string;)lorg/apache/hadoop/hbase/filter/filter; @56: invokespecial|  reason:|    type 'org/apache/hadoop/hbase/filter/regexstringcomparator' (current frame, stack[3]) not assignable 'org/apache/hadoop/hbase/filter/writablebytearraycomparable'|  current frame:|    bci: @56|    flags: { }|    locals: { '[ljava/lang/string;', 'org/apache/hadoop/hbase/filter/filter', 'java/lang/string', 'java/lang/string' }|    stack: { uninitialized 41, uninitialized 41, 'org/apache/hadoop/hbase/filter/comparefilter$compareop', 'org/apache/hadoop/hbase/filter/regexstringcomparator' }|  bytecode:|    0000000: 014c 2abe 08a4 0009 2a08 32a7 0004 014d|    0000010: 2cc7 0005 01b0 2c12 34b6 0035 9900 232c|    0000020: 042c b600 36b6 0037 4ebb 0038 59b2 0039|    0000030: bb00 3a59 2db7 003b b700 3c4c a700 0fbb|    0000040: 003d 592c b800 26b7 003e 4c2b b0       |  stackmap table:|    append_frame(@14,object[#133])|    same_locals_1_stack_item_frame(@15,object[#138])|    append_frame(@22,object[#138])|    same_frame(@63)|    same_frame(@75)|     @ com.sample.client.takebackup(hdfsclient.java:428)     @ com.sample.client.backupdata(backuprestoreservice.java:396)     @ sun.reflect.nativemethodaccessorimpl.invoke0(native method)     @ sun.reflect.nativemethodaccessorimpl.invoke(nativemethodaccessorimpl.java:57)     @ sun.reflect.delegatingmethodaccessorimpl.invoke(delegatingmethodaccessorimpl.java:43)     @ java.lang.reflect.method.invoke(method.java:606)     @ org.glassfish.jersey.server.model.internal.resourcemethodinvocationhandlerfactory$1.invoke(resourcemethodinvocationhandlerfactory.java:81)     @ org.glassfish.jersey.server.model.internal.abstractjavaresourcemethoddispatcher$1.run(abstractjavaresourcemethoddispatcher.java:144)     @ org.glassfish.jersey.server.model.internal.abstractjavaresourcemethoddispatcher.invoke(abstractjavaresourcemethoddispatcher.java:161)     @ org.glassfish.jersey.server.model.internal.javaresourcemethoddispatcherprovider$responseoutinvoker.dodispatch(javaresourcemethoddispatcherprovider.java:160)     @ org.glassfish.jersey.server.model.internal.abstractjavaresourcemethoddispatcher.dispatch(abstractjavaresourcemethoddispatcher.java:99)     @ org.glassfish.jersey.server.model.resourcemethodinvoker.invoke(resourcemethodinvoker.java:389)     @ org.glassfish.jersey.server.model.resourcemethodinvoker.apply(resourcemethodinvoker.java:347)     @ org.glassfish.jersey.server.model.resourcemethodinvoker.apply(resourcemethodinvoker.java:102)     @ org.glassfish.jersey.server.serverruntime$2.run(serverruntime.java:326)     @ org.glassfish.jersey.internal.errors$1.call(errors.java:271)     @ org.glassfish.jersey.internal.errors$1.call(errors.java:267)     @ org.glassfish.jersey.internal.errors.process(errors.java:315)     @ org.glassfish.jersey.internal.errors.process(errors.java:297)     @ org.glassfish.jersey.internal.errors.process(errors.java:267)     @ org.glassfish.jersey.process.internal.requestscope.runinscope(requestscope.java:317)     @ org.glassfish.jersey.server.serverruntime.process(serverruntime.java:305)     @ org.glassfish.jersey.server.applicationhandler.handle(applicationhandler.java:1154)     @ org.glassfish.jersey.servlet.webcomponent.serviceimpl(webcomponent.java:473)     @ org.glassfish.jersey.servlet.webcomponent.service(webcomponent.java:427)     @ org.glassfish.jersey.servlet.servletcontainer.service(servletcontainer.java:388)     @ org.glassfish.jersey.servlet.servletcontainer.service(servletcontainer.java:341)     @ org.glassfish.jersey.servlet.servletcontainer.service(servletcontainer.java:228)     @ com.eclipsesource.jaxrs.publisher.internal.servletcontainerbridge.service(servletcontainerbridge.java:76)     @ org.eclipse.equinox.http.servlet.internal.servletregistration.service(servletregistration.java:61)     @ org.eclipse.equinox.http.servlet.internal.proxyservlet.processalias(proxyservlet.java:128)     @ org.eclipse.equinox.http.servlet.internal.proxyservlet.service(proxyservlet.java:68)     @ javax.servlet.http.httpservlet.service(httpservlet.java:770)     @ org.eclipse.equinox.http.jetty.internal.httpservermanager$internalhttpserviceservlet.service(httpservermanager.java:360)     @ org.eclipse.jetty.servlet.servletholder.handle(servletholder.java:684)     @ org.eclipse.jetty.servlet.servlethandler.dohandle(servlethandler.java:503)     @ org.eclipse.jetty.server.session.sessionhandler.dohandle(sessionhandler.java:229)     @ org.eclipse.jetty.server.handler.contexthandler.dohandle(contexthandler.java:1086)     @ org.eclipse.jetty.servlet.servlethandler.doscope(servlethandler.java:429)     @ org.eclipse.jetty.server.session.sessionhandler.doscope(sessionhandler.java:193)     @ org.eclipse.jetty.server.handler.contexthandler.doscope(contexthandler.java:1020)     @ org.eclipse.jetty.server.handler.scopedhandler.handle(scopedhandler.java:135)     @ org.eclipse.jetty.server.handler.handlerwrapper.handle(handlerwrapper.java:116)     @ org.eclipse.jetty.server.server.handle(server.java:370)     @ org.eclipse.jetty.server.abstracthttpconnection.handlerequest(abstracthttpconnection.java:494)     @ org.eclipse.jetty.server.abstracthttpconnection.content(abstracthttpconnection.java:982)     @ org.eclipse.jetty.server.abstracthttpconnection$requesthandler.content(abstracthttpconnection.java:1043)     @ org.eclipse.jetty.http.httpparser.parsenext(httpparser.java:865)     @ org.eclipse.jetty.http.httpparser.parseavailable(httpparser.java:240)     @ org.eclipse.jetty.server.asynchttpconnection.handle(asynchttpconnection.java:82)     @ org.eclipse.jetty.io.nio.selectchannelendpoint.handle(selectchannelendpoint.java:696)     @ org.eclipse.jetty.io.nio.selectchannelendpoint$1.run(selectchannelendpoint.java:53)     @ org.eclipse.jetty.util.thread.queuedthreadpool.runjob(queuedthreadpool.java:608)     @ org.eclipse.jetty.util.thread.queuedthreadpool$3.run(queuedthreadpool.java:543)     @ java.lang.thread.run(thread.java:745) 

you must have passed longer array args, otherwise there no such exception. post entire code.

private static filter getexportfilter(string[] args) { filter exportfilter = null; string filtercriteria = (args.length > 5) ? args[5]: null; if (filtercriteria == null) return null; if (filtercriteria.startswith("^")) {   string regexpattern = filtercriteria.substring(1, filtercriteria.length());   exportfilter = new rowfilter(compareop.equal, new regexstringcomparator(regexpattern)); } else {   exportfilter = new prefixfilter(bytes.tobytesbinary(filtercriteria)); } return exportfilter; } 

Comments