public int clearTableByTableName(String tableName) throws Exception { logger.debug("======InitHbaseServiceImpl clearTableByTableName======="); int count = 0; List<HBaseRow> rowsList = hbaseUtil.getRowsByStartAndEnd(tableName, null, null, HBaseConsts.FILTER_RECORD_COUNT); count += deleteData(tableName, rowsList, 0); //解決返回查找第一條為前一頁最后一條數據 while (rowsList.size() == HBaseConsts.FILTER_RECORD_COUNT) { String startKey = rowsList.get(rowsList.size() - 1).getRowKey(); rowsList.clear(); try { rowsList = hbaseUtil.getRowsByStartAndEnd(tableName, startKey, null, HBaseConsts.FILTER_RECORD_COUNT); } catch (Exception e) { logger.error("==========獲取" + tableName + "數據異常=========="); } count += deleteData(tableName, rowsList, 1); if (rowsList.size() < HBaseConsts.FILTER_RECORD_COUNT) { break; } } return count; } /** * 刪除數據 * * @param tableName * @param rowsList * @param startIdx * @throws Exception */ private int deleteData(String tableName, List<HBaseRow> rowsList, int startIdx) throws Exception { logger.debug("=======deleteData rowsList:{}========", rowsList.size()); int successCount = 0; for (int i = startIdx; i < rowsList.size(); i++) { HBaseRow baseRow = rowsList.get(i); String rowKey = baseRow.getRowKey(); try { hbaseUtil.deleteRow(tableName, rowKey); successCount++; } catch (Exception e) { logger.error("=====清數據出現異常bug====="); throw new InvokeException(ResultEnum.FAILED.getCode(), "清數據出現異常bug"); } } logger.debug("==========deleteData========本次刪除成功數據:{}", successCount); return successCount; }