设为首页 加入收藏

TOP

Spring + Hbase整合
2019-04-14 13:45:25 】 浏览:89
Tags:Spring Hbase 整合

1、版本说明

(1)spring版本:4.3.9.RELEASE

(2)Hbase版本:1.1.2

(3)Hadoop版本:2.7.1

Hbase和hadoop的版本一定要与集群上的版本一致,不然程序会报方法不存在的各种异常!

2、Hbase和Hadoop的pom

<!-- habse -->
<dependency>
  <groupId>org.apache.hbase</groupId>
  <artifactId>hbase-client</artifactId>
  <version>1.1.2</version>
</dependency>
<dependency>
  <groupId>org.apache.hbase</groupId>
  <artifactId>hbase-server</artifactId>
  <version>1.1.2</version>
</dependency>
<dependency>
  <groupId>org.apache.hbase</groupId>
  <artifactId>hbase-common</artifactId>
  <version>1.1.2</version>
</dependency>

<!-- hadoop -->
 <dependency>
  <groupId>org.apache.hadoop</groupId>
  <artifactId>hadoop-hdfs</artifactId>
  <version>2.7.1</version>
</dependency>
<dependency>
  <groupId>org.apache.hadoop</groupId>
  <artifactId>hadoop-client</artifactId>
  <version>2.7.1</version>
</dependency>
<dependency>
  <groupId>org.apache.hadoop</groupId>
  <artifactId>hadoop-common</artifactId>
  <version>2.7.1</version>
</dependency>
<dependency>
  <groupId>org.apache.hadoop</groupId>
  <artifactId>hadoop-auth</artifactId>
  <version>2.7.1</version>
</dependency>

3、Hbase的使用(原生操作方式)

(1)HbaseClient:简单的连接管理

Hbase-site.xml从Hbase的安装目录下复制出来直接用。

public class HbaseClient {
    //自动配置hbase-site.xml
    //HBaseConfiguration会自动加载resources下的hbase-site.xml进行初始化
    public static Configuration config = HBaseConfiguration.create();

    /**
     * 获取连接(长连接,已实现连接池管理)
     * @return
     * @throws IOException
     */
    public static Connection getConnection() throws IOException {
        //手动配置hbase-site.xml
        //config.addResource("hbase-site.xml");
        Connection conn = ConnectionFactory.createConnection(config);
        return conn;
    }

    /**
     * 关闭连接
     * @param conn
     * @throws IOException
     */
    public static void close(Connection conn) throws IOException {
        if(conn!=null && !conn.isClosed()) {
            conn.close();
        }
    }
}

(2)Hbase命令操作

建表:create 'app_rec' ,'cf';

存值:put 'app_rec','1','cf:recdata','123';

取值:get 'app_rec','1';

字段说明:

表名:app_rec

key:1

族:cf

列名:recdata

(3)Hbase原生API操作

1)controller下的get方法:

import com.utils.HbaseClient;
import org.apache.hadoop.hbase.Cell;
import org.apache.hadoop.hbase.CellUtil;
import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.client.Connection;
import org.apache.hadoop.hbase.client.Get;
import org.apache.hadoop.hbase.client.Result;
import org.apache.hadoop.hbase.client.Table;
import org.apache.hadoop.hbase.util.Bytes;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
------------------------------------------------------------

@RequestMapping( GET )
    public void get(HttpServletRequest request, HttpServletResponse response) throws IOException {
        Connection connection = HbaseClient.getConnection();
        System.out.println("connection: "+ connection);
        TableName tableName = TableName.valueOf("app_rec");
        try {
            Table table = connection.getTable(tableName);
            Get get = new Get(Bytes.toBytes("1"));
            get.addColumn(Bytes.toBytes("cf"),Bytes.toBytes("recdata"));
            Result results = table.get(get);
            showCell(results);
        } catch(Exception e) {

        } finally {
            HbaseClient.close(connection);
        }
    }

    public static void showCell(Result result) {
        Cell[] cells = result.rawCells();
        for (Cell cell : cells) {
            System.out.println("row Name:" + new String(CellUtil.cloneQualifier(cell)) + " ");
            System.out.println("value:" + new String(CellUtil.cloneva lue(cell)) + " ");
        }
    }

2)部署后请求的结果如下,至此整合成功!

本文只是做spring+hbase的搭建,搭建成功了后面就可以自由发挥了。

更多原生操作参见:

https://www.cnblogs.com/junrong624/p/7323483.html

https://blog.csdn.net/sinat_39409672/article/details/78403015

(4)扩展:Hbasetemplated操作Hbase

链接参见:https://blog.csdn.net/ludonqin/article/details/51509261

Hadoop与Hbase的版本对应:http://hbase.apache.org/book.html#basic.prerequisites

spring-data-hadoop:https://docs.spring.io/spring-hadoop/docs/2.3.0.RELEASE/reference/html/requirements.html

GitHub:https://github.com/spring-projects/spring-hadoop-samples/

提示:使用spring-data-hadoop会出现包冲突的问题,所以要自己控制版本!切记!

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇认识HBase 下一篇hbase创建namespace,及创建表时..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目