HBase 清空表數據


    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;
    }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM