关于JAVA获取OTS(表格存储)数据的问题

1.定义地址,访问id、密码、实例名、表名、主键名。(注意ots只能通过主键名进行查询
private static String endPoint = "http://jxwz-ots.cn-******.ots.yun.zj";//地址
private static String accessKeyId = "******";//id
private static String accessKeySecret = "******";//密码
private static String instanceName = "j*******s";//实例名
private static String table = "s*******t";//表名
private static String PRIMARY_KEY_NAME = "c*******j";//主键名
2.获取连接
SyncClient client = new SyncClient(endPoint, accessKeyId, accessKeySecret, instanceName);
3.获取表中数据,官网有很多例子,本次使用的是范围查询
RangeRowQueryCriteria rangeRowQueryCriteria = new RangeRowQueryCriteria(table);
// 设置起始主键
PrimaryKeyBuilder primaryKeyBuilder = PrimaryKeyBuilder.createPrimaryKeyBuilder();
primaryKeyBuilder.addPrimaryKeyColumn(PRIMARY_KEY_NAME, PrimaryKeyValue.fromString(con1));
rangeRowQueryCriteria.setInclusiveStartPrimaryKey(primaryKeyBuilder.build());
// 设置结束主键
primaryKeyBuilder = PrimaryKeyBuilder.createPrimaryKeyBuilder();
primaryKeyBuilder.addPrimaryKeyColumn(PRIMARY_KEY_NAME, PrimaryKeyValue.fromString(con2));
rangeRowQueryCriteria.setExclusiveEndPrimaryKey(primaryKeyBuilder.build());
rangeRowQueryCriteria.setMaxVersions(1);
while (true) {
    GetRangeRequest getRangeRequest = new GetRangeRequest(rangeRowQueryCriteria);
    GetRangeResponse getRangeResponse = client.getRange(getRangeRequest);
    for (Row row : getRangeResponse.getRows()) {
        Column[] columns = row.getColumns();
        for(Column column:columns){//填写业务逻辑
            if("i_url".equals(column.getName())){
                String url = column.getValue().toString();
            }
        }
    }
    // 若nextStartPrimaryKey不为null, 则继续读取.
    if (getRangeResponse.getNextStartPrimaryKey() != null) {
        rangeRowQueryCriteria.setInclusiveStartPrimaryKey(getRangeResponse.getNextStartPrimaryKey());
    } else {
        break;
    }
}
4.踩坑经历

提示和com.google.protobuf冲突:报错UnsupportedOperationException: This is supposed to be overridden by subclasses.官网给的解决方案是在maven中加<classifier>jar-with-dependencies</classifier>

此方法貌似解决了问题因为用main方法测试通过,但放入项目中后,启动项目后依然报此错误,本人使用的是tablestore4.2.3。最后经过一系列的验证,把原来项目中的protobuf版本改成和tablestore中自带的版本一致后,问题解决。



 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值