Hbase表Scan方法获取rowkey

/**
	 *每次读取Hbase数据库Page_Size条
	 * @param entity
	 */
	public static void getContentFromHbase(HbaseExportEntity entity) {
		 StringBuffer buffer = new StringBuffer();
		 ResultScanner scanner = null;
		 
		 String startRow =  entity.getStartRow();
		 String endRow =    entity.getStopRow();
		 String tableName = entity.getTableName();
		 
		 //Filter filter = getHbaseExportFilter(entity.getCellList());							//过滤器
		 String cellNameStr = getCellNameStr(entity.getCellList(),entity.getFieldSplit());		//列名
		 String fileName = HbaseExportUtil.getFileName(entity);								//获取文件名
		 
		 //文件存储路径(配置)+ tableName + 文件名(程序自动生成)+文件扩展名(配置)
		 String  fileURL = entity.getSavePath()+ File.separator + entity.getTableName() 
		 	+ File.separator  + fileName;											//保存绝对文件路径
		
		 if(entity.getShowFieldTitle()) {											//首行显示字段
         	buffer.append(cellNameStr);
         }
		 
		 if(entity.getShowRowkey()) {
			 buffer.append(entity.getFieldSplit());
			 buffer.append(ROW_KEY);
		 }
		 
		 buffer.append(FILE_NEWLINE);
		 logger.info("读hbase数据库--"+ tableName+"--表数据写入--"+ fileName +"--处理开始");
		 int recordSize = 0;
	     int totalSize = 0;
	     String rowKey = null;
		 do {
	            scanner = HBaseScan.hbaseScan(tableName, ExportConstant.PAGE_SIZE, startRow, endRow, null);
	            recordSize = 0;
	            for (Result result : scanner) {
	            	for (KeyValue kv : result.raw()) {  
	            		int rowlength = Bytes.toShort(kv.getBuffer(), kv.getOffset()+KeyValue.ROW_OFFSET);  
	                    rowKey = Bytes.toStringBinary(kv.getBuffer(), kv.getOffset()+KeyValue.ROW_OFFSET + Bytes.SIZEOF_SHORT, rowlength);
	                    if(!StringUtils.isBlank(rowKey)) {
	                    	 break;
	                    }
	            	}
	                recordSize++;
	                startRow = HBaseUtil.bytesToStr(result.getRow()) + "0";	  
	                
	                String columnValueStr = getColumnValue(result,entity,rowKey);
	                buffer.append(columnValueStr);
	             	buffer.append(FILE_NEWLINE);
	            }
	            totalSize += recordSize;
	            
	            if(totalSize % ExportConstant.PAGE_SIZE==0) {						//每次写入PAGE_SIZE条
	            	HbaseExportUtil.WriteContentToFile(buffer.toString(), fileURL);
	            	buffer = new StringBuffer();
	            }
	      } while (recordSize != 0);
		  //写入内容到文件中
		  HbaseExportUtil.WriteContentToFile(buffer.toString(), fileURL);
		  logger.info("读hbase数据库--"+ tableName+"--表数据写入--"+ fileName +"--处理结束...共写入记录总数:"+totalSize+"条");
	}

获取rowkey方法

 for (Result result : scanner) {
	            	for (KeyValue kv : result.raw()) {  
	            		int rowlength = Bytes.toShort(kv.getBuffer(), kv.getOffset()+KeyValue.ROW_OFFSET);  
	                    rowKey = Bytes.toStringBinary(kv.getBuffer(), kv.getOffset()+KeyValue.ROW_OFFSET + Bytes.SIZEOF_SHORT, rowlength);
	                    if(!StringUtils.isBlank(rowKey)) {
	                    	 break;
	                    }
	            	}

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值