使用版本0.98.0-hadoop2写入HBase表

时间:2014-07-15 14:13:34

标签: java mapreduce hbase

我正在尝试使用HBase版本0.98.0-hadoop2写入Java中的HBase表。在之前的版本中,我使用的是(0.94.x-hadoop1),Put实现了Writable接口,可以在reducer中使用以下列方式写入hbase表:

Put row = new Put(Bytes.toBytes(unique_row_identifier));
put.add(family_bytes, qualifier_bytes, value_bytes);
... // other put.adds to the same row
context.write(null, put);\n

使用升级后的jar(版本0.98.0-hadoop2)时,带有context.write(null,row)的所有行都会出现错误,并显示消息“不兼容的类型:Put无法转换为Writable”。在进行一些研究时,Put对象在版本0.94.0中实现了Writable,但不再在0.98.0中实现此接口。

还有其他方法可以从reducer写入hbase表吗?是否应该使用此版本的hbase?

欢迎任何建议。

由于

1 个答案:

答案 0 :(得分:0)

您是否将TableOutputFormat用作作业输出格式?在0.94.x中,TableOutputFormat扩展了OutputFormat。在0.98中,TableOutputFormat扩展了OutputFormat。所以context.write(null,put);应该在0.98编译好,因为Put是扩展Mutation。确保hbase依赖是正确的。