Java 扩展HBase Put时出现问题

Java 扩展HBase Put时出现问题,java,hadoop,hbase,Java,Hadoop,Hbase,我在尝试扩展HBase Put类时遇到问题 我有这样的代码 public class HBasePut extends Put { //here i define my own adds because i have only string "keys" //so i dont have to use Bytes.toBytes() every time and so on } 但在测试这些类时,这段代码是正常的: Put p = new Put(Bytes.toBy

我在尝试扩展HBase Put类时遇到问题

我有这样的代码

public class HBasePut extends Put {  
    //here i define my own adds because i have only string "keys"  
    //so i dont have to use Bytes.toBytes() every time and so on 
}
但在测试这些类时,这段代码是正常的:

Put p = new Put(Bytes.toBytes('row'));  
p.add(Bytes.toBytes('cf'), Bytes.toBytes('col'), Bytes.toBytes(1));
users.put(p);
但是这一个在尝试了大约70秒后出现了一个例外——RetriesHaustedWithDetailsException

HBasePut p = new HBasePut('row');  
p.add('cf', 'col', 1);
users.put(p);
所以我尝试在RetriesXh中迭代异常。。。它告诉我有一个异常,但它为空…
我正在查看Put、HTable和HConnection的代码,但是我找不到任何依赖于在HBase中准确编写Put类的代码,所以我不知道为什么我的HBasePut不工作

是否有可能以某种方式扩展Put?
谢谢

如果查看您的regionserver日志,您将看到类似“找不到类…HBasePut”这样的异常。因此,HBase显然将Put实例从客户端传输到服务器,但服务器不知道您的子类,无法处理它


我建议不要子类化,而是建议编写一个自定义的Util类,该类提供一个静态“add”方法,将Put实例和字符串作为参数,并使用静态导入导入此方法。

正如zillion1所说,只需使用静态方法:

public static void add(Put put, String col, String qual, String data)
{
  put.add(col.getBytes(), qual.getBytes(), data.getBytes());
}

是的,这是我第二次考虑如何做,但我想扩展,因为这(Utils)方式使我失去了“流体”模式$put->add('something')->add('and other')->。。。但是非常感谢你——这就是我最后做的。