HBase java自定义筛选器错误反序列化异常ClassNotFoundException
我扩展了FilterBase以创建我的自定义筛选器MyCustomFilter。我编译了它,将.jar上传到运行HBase的服务器上,重新启动它,并在我将这个类添加到过滤器中时(我只有这个过滤器) 自定义筛选器代码为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
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"