文档章节

spring-data-hadoop与HBase结合示例

JackieYeah
 JackieYeah
发布于 2016/09/09 23:51
字数 737
阅读 2652
收藏 9

##测试数据准备

关于测试数据的准备可以参考之前写的一篇文章 HBase单机模式和伪分布式模式安装和配置HBase简单操作 这节。

data-prepare

##示例程序

###pom.xml

要想使用 Spring for Apache Hadoop 与 HBase 进行交互,pom.xml 文件需要配置如下:

<properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <hbase.version>1.2.2</hbase.version>
        <spring-data-hadoop.version>2.4.0.RELEASE</spring-data-hadoop.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.apache.hbase</groupId>
            <artifactId>hbase-client</artifactId>
            <version>${hbase.version}</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.data</groupId>
            <artifactId>spring-data-hadoop</artifactId>
            <version>${spring-data-hadoop.version}</version>
        </dependency>
    </dependencies>

###Spring配置文件

创建一个 Spring 配置文件 spring-hbase.xml,在该文件中配置与 HBase 连接相关的信息。spring-hbase.xml 有两种配置方式:一种是直接指定 HDFS 地址以及 ZooKeeper 的地址和端口号,另外一种就是引入 HBase 配置文件 hbase-site.xml。下面就这两种方式分开进行描述。

####直接指定

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:hdp="http://www.springframework.org/schema/hadoop"
       xmlns:p="http://www.springframework.org/schema/p"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.2.xsd http://www.springframework.org/schema/hadoop http://www.springframework.org/schema/hadoop/spring-hadoop-2.3.xsd">

    <!-- HDFS配置 -->
    <hdp:configuration id="hadoopConfiguration">
        fs.defaultFS="hdfs://localhost:9000"
    </hdp:configuration>

    <!-- HBase连接配置 -->
    <hdp:hbase-configuration id="hbaseConfiguration" zk-quorum="127.0.0.1" zk-port="2181"/>

    <!-- HbaseTemplate Bean配置-->
    <bean id="hbaseTemplate" class="org.springframework.data.hadoop.hbase.HbaseTemplate"
          p:configuration-ref="hbaseConfiguration"/>
</beans>

####引入hbase-site.xml

hbase-site.xml配置文件内容如下:

<configuration>
    <!-- 使用集群模式 -->
    <property>
        <name>hbase.cluster.distributed</name>
        <value>true</value>
    </property>
    <!-- HDFS 地址 -->
    <property>
        <name>hbase.rootdir</name>
        <value>hdfs://localhost:9000/hbase</value>
    </property>
    <!-- ZooKeeper 地址 -->
    <property>
       <name>hbase.zookeeper.quorum</name>
      <value>localhost</value>
    </property>
    <!-- ZooKeeper 端口号 -->
    <property>
        <name>hbase.zookeeper.property.clientPort</name>
        <value>2181</value>
    </property>
    <!-- ZooKeeper 数据文件路径 -->
    <property>
        <name>hbase.zookeeper.property.dataDir</name>
        <value>/opt/zookeeper/data</value>
    </property>
</configuration>

spring-hbase.xml配置如下:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:hdp="http://www.springframework.org/schema/hadoop"
       xmlns:p="http://www.springframework.org/schema/p"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.2.xsd http://www.springframework.org/schema/hadoop http://www.springframework.org/schema/hadoop/spring-hadoop-2.3.xsd">

    <!-- 直接引入类路径上的hbase-site.xml,也可以引入文件系统路径下hbase-site.xml,如:file:/opt/hbase/conf/hbase-site.xml -->
    <hdp:configuration id="hadoopConfiguration" resources="classpath:hbase-site.xml"/>

    <hdp:hbase-configuration id="hbaseConfiguration" configuration-ref="hadoopConfiguration"/>

    <!-- HbaseTemplate Bean配置-->
    <bean id="hbaseTemplate" class="org.springframework.data.hadoop.hbase.HbaseTemplate"
          p:configuration-ref="hbaseConfiguration"/>
</beans>

###测试代码

import org.apache.hadoop.hbase.client.Result;
import org.apache.hadoop.hbase.util.Bytes;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.data.hadoop.hbase.HbaseTemplate;
import org.springframework.data.hadoop.hbase.RowMapper;

public class HBaseTest {

    private static final String TABLE_NAME = "test";

    private static final String ROW_KEY = "row1";

    private static final String COLUMN_FAMILY = "cf";

    private static final String QUALIFIER = "a";

    public static void main(String[] args) {
        // 加载Spring配置文件
        ApplicationContext applicationContext = new ClassPathXmlApplicationContext("spring-hbase.xml");
        // 获取HbaseTemplate
        HbaseTemplate hbaseTemplate = (HbaseTemplate) applicationContext.getBean("hbaseTemplate");
        // 通过表名和rowKey获取最近一行数据
        String result = hbaseTemplate.get(TABLE_NAME, ROW_KEY, new RowMapper<String>() {
            public String mapRow(Result result, int rowNum) throws Exception {
                return Bytes.toString(result.getValue(COLUMN_FAMILY.getBytes(), QUALIFIER.getBytes()));
            }
        });
        System.out.println(result);
    }
}

输出结果是:value1。

##总结

从上面的示例可以看到 Spring for Apache Hadoop 与 HBase 结合比较简单,API 也易于使用, 可自行动手实践。

© 著作权归作者所有

JackieYeah
粉丝 45
博文 70
码字总数 90004
作品 0
武汉
程序员
私信 提问
Spring for Apache Hadoop 2.2 GA 发布

Spring for Apache Hadoop 2.2 GA 发布,重要更新内容如下: Remove support for running with JDK 6, Java 7 or later is now required Improvements to the HDFS writer to support syncab......

oschina
2015/06/12
1K
6
hive 与 hbase 结合

一、hive与hbase的结合 Hive会经常和Hbase结合使用,把Hbase作为Hive的存储路径,所以Hive整合Hbase尤其重要。使用Hive读取Hbase中的数据,可以使用HQL语句在HBase表上进行查询、插入操作;甚...

meteor_hy
2018/06/26
0
0
hadoop及hbase集群启停的几种方式

1、生产环境集群 2、web管理页面 hadoop web管理页面(主备) http://192.168.10.101:50070 http://192.168.10.102:50070 hbase web管理页面(主备) http://192.168.10.101:16010 http://1......

断臂人
2018/06/07
0
0
Hbase高可用(HA)安装笔记

这是在前一篇Hadoop 3.1.1高可用(HA)集群安装笔记 基础上,进行的操作. 安装HBase vim conf/hbase-site.xml vim conf/regionservers nn01启动 访问web页面 master regionServer http://maste...

张shieppp
2018/09/28
297
0
Hbase java api

本文中使用的是最原始的java api, 没有使用spring-data-hbase,只是使用spring管理Hbase的配置 查询操作分为如下几个步骤: 获取Hbase配置,这里的配置主要指hbase的地址。如果是Zookeeper...

哭哭吓唬你
2015/11/02
152
0

没有更多内容

加载失败,请刷新页面

加载更多

CSS盒子模型

一、什么叫框模型 页面元素皆为框(盒子) 定义了元素框处理元素内容,内边距,外边距以及边框的计算方式 二、外边距 围绕在元素边框外的空白距离(元素与元素之间的距离) 语法:margin,定...

wytao1995
今天
4
0
Replugin借助“UI进程”来快速释放Dex

public static boolean preload(PluginInfo pi) { if (pi == null) { return false; } // 借助“UI进程”来快速释放Dex(见PluginFastInstallProviderProxy的说明) return PluginFastInsta......

Gemini-Lin
今天
4
0
Hibernate 5 的模块/包(modules/artifacts)

Hibernate 的功能被拆分成一系列的模块/包(modules/artifacts),其目的是为了对依赖进行独立(模块化)。 模块名称 说明 hibernate-core 这个是 Hibernate 的主要(main (core))模块。定义...

honeymoose
今天
4
0
精华帖

第一章 jQuery简介 jQuery是一个JavaScript库 jQuery具备简洁的语法和跨平台的兼容性 简化了JavaScript的操作。 在页面中引入jQuery jQuery是一个JavaScript脚本库,不需要特别的安装,只需要...

流川偑
今天
7
0
语音对话英语翻译在线翻译成中文哪个方法好用

想要进行将中文翻译成英文,或者将英文翻译成中文的操作,其实有一个非常简单的工具就能够帮助完成将语音进行翻译转换的软件。 在应用市场或者百度手机助手等各大应用渠道里面就能够找到一款...

401恶户
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部