我需要根据时间范围来查询hbase表中的数据,如果rowkey用时间戳当前缀的话插入性能就会慢。我刚怎么样设计表结构?谁能提供一个实现方案吗?
1条回答
- 哎呀丶老张 2014-12-16 11:23关注
public List getRecentJobs(long time, int num) {
long timestamp = time < 0 ? 0 : TRACE_ROW_KEY_SEED - time;
String keyPrefix = StringUtils.leftPad("" + timestamp, 16, '0');
List list = new ArrayList();
HTableInterface table = null;
try {
table = this.getHTable(TABLE_JOB_TRACE);
byte[] startRow = BytesUtil.toBytes(keyPrefix + "00");
byte[] stopRow = BytesUtil.toBytes("zz");
Scan scan = new Scan(startRow, stopRow);
ResultScanner rs = table.getScanner(scan);int i = 0; for (Result r : rs) { String guid = BytesUtil.toString(r.getRow()); guid = StringUtils.right(guid, guid.length() - TRACE_ROW_KEY_SEED_LENGTH); String correlationId = BytesUtil.toString(r.getValue(CF_INFO, COL_CORRELATIONID)); String errorMessage = BytesUtil.toString(r.getValue(CF_INFO, COL_ERROR)); long finishTime = BytesUtil.toLong(r.getValue(CF_INFO, COL_FINISHTIME)); String name = BytesUtil.toString(r.getValue(CF_INFO, COL_NAME)); long startTime = BytesUtil.toLong(r.getValue(CF_INFO, COL_STARTTIME)); int status = BytesUtil.toInt(r.getValue(CF_INFO, COL_STATUS)); String callbackUrl = BytesUtil.toString(r.getValue(CF_INFO, COL_CALLBACK)); String task = BytesUtil.toString(r.getValue(CF_INFO, COL_TASK)); JobInstance instance = new JobInstance(); instance.setGuid(guid); instance.setCorrelationId(correlationId); instance.setErrorMessage(errorMessage); instance.setFinishTime(finishTime); instance.setName(name); instance.setStartTime(startTime); instance.setStatus(status); instance.setCallbackUrl(callbackUrl); instance.setTask(task); list.add(instance); i ++; if (i >= num) { break; } } return list; } catch (IOException e) { throw new BeyeException(510, e.getMessage(), e); } catch (NullPointerException e) { throw new BeyeException(404, e.getMessage(), e); } finally { try { table.close(); } catch (Exception ex) { } } }
解决 无用评论 打赏 举报
悬赏问题
- ¥15 回答4f系统的像差计算
- ¥15 java如何提取出pdf里的文字?
- ¥100 求三轴之间相互配合画圆以及直线的算法
- ¥100 c语言,请帮蒟蒻写一个题的范例作参考
- ¥15 名为“Product”的列已属于此 DataTable
- ¥15 安卓adb backup备份应用数据失败
- ¥15 eclipse运行项目时遇到的问题
- ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
- ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
- ¥15 自己瞎改改,结果现在又运行不了了