java代码连接Hbase

添加jar包:

           <dependency>
            <groupId>org.springframework.data</groupId>
            <artifactId>spring-data-hadoop</artifactId>
            <version>2.2.0.RELEASE</version>
        </dependency>

              <dependency>
			<groupId>org.apache.hbase</groupId>
			<artifactId>hbase-client</artifactId>
			<version>1.2.3</version>
			<exclusions>
				<exclusion>
					<artifactId>jdk.tools</artifactId>
					<groupId>*</groupId>
				</exclusion>
				<exclusion>
					<groupId>org.apache.httpcomponents</groupId>
					<artifactId>httpclient</artifactId>
				</exclusion>
				<exclusion>
					<groupId>org.apache.httpcomponents</groupId>
					<artifactId>httpcore</artifactId>
				</exclusion>
				<exclusion>
					<groupId>io.netty</groupId>
					<artifactId>netty-all</artifactId>
				</exclusion>
			</exclusions>
		</dependency>

在spring配置文件中添加如下配置:

<
	<hdp:configuration />
         <hdp:hbase-configuration id="hbaseConfiguration" zk-quorum="xxx.xxx.xxx.xx:2181" zk-port="2181">
		hbase.rpc.timeout=1000
		hbase.client.operation.timeout=2000
		hbase.client.retries.number=3
		zookeeper.recovery.retry=10
		zookeeper.recovery.retry.intervalmill=500
	</hdp:hbase-configuration>
	
	<!-- 配置HbaseTemplate -->
	<bean id="htemplate" class="org.springframework.data.hadoop.hbase.HbaseTemplate">
		<property name="configuration" ref="hbaseConfiguration"/>
	</bean>

在java中实现代码:

	@Autowired
	private HbaseTemplate htemplate;
	
	@Value("#{${server.db.hbase.trace.tablename}}")
	private String tableName;
	
	@Value("#{${server.db.hbase.trace.familyname}}")
	private String familyName;

	@Value("#{${server.db.hbase.trace.qualifier}}")
	private String qualifier;

MessageTree msg = htemplate.get(tableName, rowKey, familyName, qualifier, new RowMapper<MessageTree>() {
			@Override
			public MessageTree mapRow(Result result, int rowNum) throws Exception {
				Cell cell = result.getColumnLatestCell(familyName.getBytes(CHARSET),                    qualifier.getBytes(CHARSET));
				// 如果获取不到内存直接返回
				if (null == cell) {
					logger.error("hbase can not find  rowkey=" + rowKey);
					return null;
				}

				byte[] bytes = CellUtil.cloneValue(cell);
				ByteBuf buf = null;
				MessageTree msg = null;
				try {
					buf = Unpooled.wrappedBuffer(bytes);
					buf.markReaderIndex();
					buf.readInt();
					msg = codec.decode(buf);
					msg.setBytes(bytes);
				} catch (Exception e) {
					logger.error("decoder data occured error!", e);
				} finally {
					if (buf != null) {
						buf.release();
					}
					codec.reset();
				}
				return msg;
			}
		});
  //main方法直接连接测试

    public static void main(String[] args) throws MasterNotRunningException, ZooKeeperConnectionException, IOException {
        Configuration cf=HBaseConfiguration.create();
        cf.set(HConstants.ZOOKEEPER_QUORUM,"10.20.15.197,10.20.15.198,10.20.15.200");
        cf.set(HConstants.ZOOKEEPER_ZNODE_PARENT, "/hbase1");
        Connection connection = ConnectionFactory.createConnection(cf);
        TableName name = TableName.valueOf("blog2");
        Table table = connection.getTable(name);
        Get get = new Get(Bytes.toBytes("rowkey1"));
        Result result = table.get(get);
        String conten =Bytes.toString(result.getValue(Bytes.toBytes("article"), Bytes.toBytes("conten")));
        table.close();
        connection.close();
        logger.info(">>>>blog2查询数据为:" + conten);
    }
}



猜你喜欢

转载自blog.csdn.net/zhangkang65/article/details/79161099
今日推荐