HBase java自定义筛选器错误反序列化异常ClassNotFoundException

HBase java自定义筛选器错误反序列化异常ClassNotFoundException,java,filter,hbase,Java,Filter,Hbase,我扩展了FilterBase以创建我的自定义筛选器MyCustomFilter。我编译了它,将.jar上传到运行HBase的服务器上,重新启动它,并在我将这个类添加到过滤器中时(我只有这个过滤器) 自定义筛选器代码为 package filters; import java.io.DataInput; import java.io.DataOutput; import java.io.IOException; import org.apache.hadoop.hbase.Cell; impo

我扩展了FilterBase以创建我的自定义筛选器MyCustomFilter。我编译了它,将.jar上传到运行HBase的服务器上,重新启动它,并在我将这个类添加到过滤器中时(我只有这个过滤器)

自定义筛选器代码为

package filters;

import java.io.DataInput;
import java.io.DataOutput;
import java.io.IOException;

import org.apache.hadoop.hbase.Cell;
import org.apache.hadoop.hbase.exceptions.DeserializationException;
import org.apache.hadoop.hbase.filter.FilterBase;
import org.apache.hadoop.hbase.util.Bytes;
import org.apache.log4j.Logger;

public class MyCustomFilter extends FilterBase {
    protected byte[] familyNameComparator = null;
    protected boolean filterRow = true;

    public MyCustomFilter(final byte[] familyName) throws Exception {
        this.familyNameComparator = familyName;
    }

    @Override
    public ReturnCode filterKeyValue(Cell cell) {
        if (Bytes.compareTo(cell.getFamilyArray(), cell.getFamilyOffset(), cell.getFamilyLength(), familyNameComparator,
                0, familyNameComparator.length) != 0) {
            return ReturnCode.SKIP;
        } else {
            return ReturnCode.INCLUDE;
        }
    }

    public boolean filterRow() {
        return this.filterRow;
    }

    public boolean filterRowKey(Cell cell) throws IOException {
        return false;
    }

    @Override
    public void reset() {
        this.filterRow = true;
    }

    /**
     * @return The filter serialized
     */
    public byte[] toByteArray() {
        return this.familyNameComparator;
    }

}
我修改了hbase-env.sh

# Extra Java CLASSPATH elements.  Optional. 
# export HBASE_CLASSPATH=
export HBASE_CLASSPATH="/mnt/datadisk/customfilters/customfilter.jar" 
有什么建议吗


致以最良好的祝愿

您的代码不重要,您的jar不在类路径中,这是唯一的问题。更好地描述你如何运行扫描谢谢,我刚刚编辑了描述扫描的消息的第一部分。我也有同样的问题。。。这个问题解决了吗?
package filters;

import java.io.DataInput;
import java.io.DataOutput;
import java.io.IOException;

import org.apache.hadoop.hbase.Cell;
import org.apache.hadoop.hbase.exceptions.DeserializationException;
import org.apache.hadoop.hbase.filter.FilterBase;
import org.apache.hadoop.hbase.util.Bytes;
import org.apache.log4j.Logger;

public class MyCustomFilter extends FilterBase {
    protected byte[] familyNameComparator = null;
    protected boolean filterRow = true;

    public MyCustomFilter(final byte[] familyName) throws Exception {
        this.familyNameComparator = familyName;
    }

    @Override
    public ReturnCode filterKeyValue(Cell cell) {
        if (Bytes.compareTo(cell.getFamilyArray(), cell.getFamilyOffset(), cell.getFamilyLength(), familyNameComparator,
                0, familyNameComparator.length) != 0) {
            return ReturnCode.SKIP;
        } else {
            return ReturnCode.INCLUDE;
        }
    }

    public boolean filterRow() {
        return this.filterRow;
    }

    public boolean filterRowKey(Cell cell) throws IOException {
        return false;
    }

    @Override
    public void reset() {
        this.filterRow = true;
    }

    /**
     * @return The filter serialized
     */
    public byte[] toByteArray() {
        return this.familyNameComparator;
    }

}
# Extra Java CLASSPATH elements.  Optional. 
# export HBASE_CLASSPATH=
export HBASE_CLASSPATH="/mnt/datadisk/customfilters/customfilter.jar"