HBase API操作
环境准备
新建项目后在pom.xml中添加依赖1
2
3
4
5
6
7
8
9
10
11<dependency>
<groupId>org.apache.hbase</groupId>
<artifactId>hbase-server</artifactId>
<version>1.3.1</version>
</dependency>
<dependency>
<groupId>org.apache.hbase</groupId>
<artifactId>hbase-client</artifactId>
<version>1.3.1</version>
</dependency>
HBaseAPI
整体操作
1 | package com.rickyin.hbase; |
1 | package com.rickyin.hbase; |
获取Configuration对象
1 | public static Configuration conf; |
注意:获取Configuration对象可以这样获取,也可以向我上面写的那样获取,区别就是上面的方法讲zookeeper的配置放在了配置文件中(hbase-site.xml)放于项目的resources目录下,而这里是手动添加进去的,都可以
判断表是否存在
1 | public static boolean isTableExist(String tableName) throws MasterNotRunningException, |
创建表
1 | public static void createTable(String tableName, String... columnFamily) throws |
删除表
1 | public static void dropTable(String tableName) throws MasterNotRunningException, |
向表中插入数据
1 | public static void addRowData(String tableName, String rowKey, String columnFamily, String |
删除多行数据
1 | public static void deleteMultiRow(String tableName, String... rows) throws IOException{ |
获取所有数据
1 | public static void getAllRows(String tableName) throws IOException{ |
获取某一行数据
1 | public static void getRow(String tableName, String rowKey) throws IOException{ |
获取某一行指定“列族:列”的数据
1 | public static void getRowQualifier(String tableName, String rowKey, String family, String |
HBaseAPI封装
1 | package com.rickyin.util; |
MapReduce
通过HBase的相关JavaAPI,我们可以实现伴随HBase操作的MapReduce过程,比如使用MapReduce将数据从本地文件系统导入到HBase的表中,比如我们从HBase中读取一些原始数据后使用MapReduce做数据分析。
查看HBase的MapReduce任务的执行
1 | $ bin/hbase mapredcp |
环境变量的导入
在/etc/profile配置1
export HBASE_HOME=/opt/module/hbase-1.3.1
并在hadoop-env.sh中配置:(注意:在for循环之后配)1
export HADOOP_CLASSPATH=$HADOOP_CLASSPATH:/opt/module/hbase/lib/*
MR-从HBase到HBase
Table2TableApplication
1 | package com.rickyin.hbase; |
HBaseMapperReduceTool
1 | package com.rickyin.hbase.tool; |
ScanDataMapper
1 | package com.rickyin.hbase.mapper; |
InsertDataReducer
1 | package com.rickyin.hbase.reducer; |
MR-从文件到HBase
File2TableApplication
1 | package com.rickyin.hbase.mr; |
File2TableTool
1 | package com.rickyin.hbase.mr.tool; |
ReadFileMapper
1 | package com.rickyin.hbase.mr.mapper; |
InsertDataReducer
1 | package com.rickyin.hbase.mr.reducer; |
从HBase到MYsql
HBase2MysqlApplication
1 | package com.rickyin.hbase; |
HBase2MysqlTool
1 | package com.rickyin.hbase.tool; |
ScanHbaseMapper
1 | package com.rickyin.hbase.mapper; |
CacheData
1 | package com.rickyin.hbase.bean; |
MysqlOutputFormat(需要在这个里面实现向mysql中写数据,这里我没有写,但是整体架子是这样的)
1 | package com.rickyin.hbase.format; |
Hbase2MysqlReducer
1 | package com.rickyin.hbase.reducer; |
HBase协处理器
之前我们第一个MR操作是将HBase中一张表的数据写入到HBase的另外一张表中,这样显得会很麻烦,我们有没有什么办法在往A表中写数据的时候同时也往B表中写入数据(有点B表是A表的备份表的意思),mysql中有个trggie可以做到,HBase中有个协处理器可以做
1 | package com.rickyin.hbase.coprocesser; |