hbase 中java 设置分区数


	@Override
	public void createTable(String tableName, Map<String, Object> tableConf,
			Map<String, Map<String, Object>> familyConfs) {
		try {
			this.initHbaseAdmin();
			try {
				if(admin.tableExists(tableName)) {
					logger.error("Table already exists! name:"+tableName);
					return;
		        }
				
				HTableDescriptor tableDesc = new HTableDescriptor(TableName.valueOf(tableName));
				if(tableConf != null ){
					for(String prop : tableConf.keySet()) {
						MethodUtils.invokeMethod(tableDesc, prop, tableConf.get(prop));
					}
				}
				for(String family : familyConfs.keySet()) {
					HColumnDescriptor hcd = new HColumnDescriptor(family);
					//默认设置数据保存在内存中以提高响应速度
					//hcd.setInMemory(true);
					//默认不保留历史版本
					hcd.setMaxVersions(1);
					
					Map<String, Object> familyConf = familyConfs.get(family);
					if (familyConf != null) {
						for(String prop : familyConf.keySet()) {
							MethodUtils.invokeMethod(hcd, prop, familyConf.get(prop));
						}
					}
					tableDesc.addFamily(hcd);
				}
				byte[][] region=null;
				
				if("ns_spider:p_site_product".equals(tableName)){
					region = this.genKeys();
				}else if("ns_spider:p_product_out_param".equals(tableName)){
					region = this.genKeysBak2();
				}else if("ns_spider:p_product_cross".equals(tableName)){
					region = this.genKeys();
				}else if("ns_spider:p_std_product".equals(tableName)){
					region = this.genKeys();
				}else if("ns_spider:t_band_log".equals(tableName)){
					region = this.genKeys();
				}else if(tableName.contains("p_common_product_temp")){
					region = this.genKeys();
				}else if(tableName.contains("ns_spider:s_")){
					region = this.genKeysBak();
				}
				
				admin.createTable(tableDesc,region);
				logger.info("create table success! name:"+tableName);
			} finally {
				admin.close();
			}
		} catch (Exception e) {
			throw new HBaseCheckException(e);
		}
	}

	/**
	 * 按字节分成32 个region
	 * 
	 * @return
	 */
	private byte[][] genKeys() {
		byte[][] keys = new byte[31][];
		byte key = 0x08;
		for (int i = 0; i < 31; i++) {
			keys[i] = new byte[]{key};
			key += 0x08;
		}
		return keys;
	}
	
	private byte[][] genKeysBak2() {
		byte[][] regions = new byte[][]{
			Bytes.toBytes("1"),
			Bytes.toBytes("2"),
			Bytes.toBytes("3"),
			Bytes.toBytes("4"),
			Bytes.toBytes("5"),
			Bytes.toBytes("6"),
			Bytes.toBytes("7"),
			Bytes.toBytes("8"),
			Bytes.toBytes("9"),
			Bytes.toBytes("0"),
			
		};
		return regions;
	}
	
	private byte[][] genKeysBak() {
		byte[][] regions = new byte[][]{
			Bytes.toBytes("01"),
			Bytes.toBytes("02"),
			Bytes.toBytes("03"),
			Bytes.toBytes("04"),
			Bytes.toBytes("05"),
			Bytes.toBytes("06"),
			Bytes.toBytes("07"),
			Bytes.toBytes("08"),
			Bytes.toBytes("09"),
			Bytes.toBytes("0a"),
			Bytes.toBytes("0b"),
			Bytes.toBytes("0c"),
			Bytes.toBytes("0d"),
			Bytes.toBytes("0e"),
			Bytes.toBytes("0f"),
			Bytes.toBytes("10")
		};
		return regions;
	}

猜你喜欢

转载自yylcslg.iteye.com/blog/2291437