首页 > 解决方案 > HBase convertScanToString 方法不接受 scan.write

问题描述

我正在尝试添加TableInputFormat.SCAN到配置对象中。因此,我必须将扫描对象转换为字符串。但是,在下面的代码中:scan.write(dos)显示编译时异常,即它没有找到write(). 我正在导入包import org.apache.hadoop.hbase.client.Scan;并具有相应的 JAR 版本:hbase-client-1.1.2.2.6.5.1000-24.jar

Scan scan = new Scan();
scan.setTimeRange(0L, 10L);                                
ByteArrayOutputStream out = new ByteArrayOutputStream();
DataOutputStream dos = new DataOutputStream(out);
scan.write(dos); <---- compile time exception, no write() method exist!

感谢提供的任何帮助。

标签: hbase

解决方案


以下代码解决了将扫描对象转换为字符串的问题:

private static String convertScanToString(Scan scan) {
try {
ClientProtos.Scan proto = ProtobufUtil.toScan(scan);            
return Base64.encodeBytes(proto.toByteArray());
} catch (Exception e) {
e.printStackTrace();
return "";
}}

导入:import org.apache.hadoop.hbase.protobuf.generated.ClientProtos;


推荐阅读