maven依赖
<dependency><groupId>org.apache.hbase</groupId><artifactId>hbase-client</artifactId><version>1.3.1</version>
</dependency><dependency><groupId>org.apache.hadoop</groupId><artifactId>hadoop-hdfs</artifactId><version>2.2.0</version>
</dependency>
代码示例
有很多的代码是重复的,只是为形成记忆,见谅,
另外需要将 hbase-site.xml,hdfs-site.xml,core-site.xml三个文件放到Resources上目录中
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.*;
import org.apache.hadoop.hbase.client.*;
import org.apache.hadoop.hbase.client.coprocessor.Batch;
import org.apache.hadoop.hbase.filter.*;
import org.apache.hadoop.hbase.io.compress.Compression;
import org.apache.hadoop.hbase.util.Bytes;
import java.util.ArrayList;
import java.util.List;public class HbaseApi_test_1 {private static Connection hbaseConn;private static Configuration hbaseConf;//HBaseAdmin 提供了一个接口来管理 HBase 数据库的表信息private static Admin hbaseAdmin;/*** 静态构造,在调用静态方法前运行, 初始化连接对象 * */static {hbaseConf = HBaseConfiguration.create();try {hbaseConn = ConnectionFactory.createConnection(hbaseConf);System.out.println("连接上了?" + !hbaseConn.isClosed());hbaseAdmin = hbaseConn.getAdmin();} catch (java.lang.Exception e) {e.printStackTrace();}}//****************************创建namespace (相当于数据库)****************************public static void createNameSpace() throws java.lang.Exception {//注意这里的语法NamespaceDescriptor ns1 = NamespaceDescriptor.create("ns1").build();hbaseAdmin.createNamespace(ns1);hbaseAdmin.close();}//****************************删除namespace (相当于数据库)****************************public static void deleteNameSpace() throws java.lang.Exception {//注意这里的语法hbaseAdmin.deleteNamespace("ns2");hbaseAdmin.close();}//****************************创建表****************************public static void create_Table() throws java.lang.Exception {TableName tableName = TableName.valueOf("ns1:mytest_4");System.out.println(hbaseAdmin.tableExists(tableName));if (!hbaseAdmin.tableExists(tableName)) {//HTableDescriptor 包含了表的名字极其对应表的列族HTableDescriptor hTableDescriptor = new HTableDescriptor(tableName);//HColumnDescriptor 维护着关于列族的信息,例如版本号,压缩设置等。HColumnDescriptor grade = new HColumnDescriptor(Bytes.toBytes("grade"));//数据保存的最大版本数grade.setMaxVersions(3);hTableDescriptor.addFamily(grade);HColumnDescriptor course = new HColumnDescriptor(Bytes.toBytes("course"));//设置保存的版本数,最小版本数和最大版本数course.setVersions(1, 3);hTableDescriptor.addFamily(course);hbaseAdmin.createTable(hTableDescriptor);/*建表时,根据rowkey,预分3个区域Region*///hbaseAdmin.createTable(t, Bytes.toBytes("row200"), Bytes.toBytes("row800"), 3);} else {System.out.println("表已经存在");}}//****************************修改表的元数据****************************public static void update_TableMeta() throws java.lang.Exception {TableName tableName = TableName.valueOf("ns1:mytest_4");HTableDescriptor tableDescriptor = hbaseAdmin.getTableDescriptor(tableName);//添加一个列族HColumnDescriptor newColumn = new HColumnDescriptor("address");//进行compaction的时候使用压缩算法newColumn.setCompactionCompressionType(Compression.Algorithm.GZ);//最大版本,没必要的话,就设置成1个newColumn.setMaxVersions(HConstants.ALL_VERSIONS);tableDescriptor.addFamily(newColumn);//修改以已有的列族HColumnDescriptor existingColumn = new HColumnDescriptor("grade");existingColumn.setCompactionCompressionType(Compression.Algorithm.GZ);existingColumn.setMaxVersions(HConstants.ALL_VERSIONS);tableDescriptor.modifyFamily(existingColumn);//修改表的元信息hbaseAdmin.modifyTable(tableName, tableDescriptor);hbaseAdmin.close();}//****************************添加列族****************************public static void add_TableFamily() throws java.lang.Exception {TableName tableName = TableName.valueOf("ns1:mytest_4");//取得一个要操作的表Table table = hbaseConn.getTable(tableName);//定义一个列族HColumnDescriptor address = new HColumnDescriptor(Bytes.toBytes("address"));//添加列族hbaseAdmin.addColumn(tableName, address);//返回表的描述信息HTableDescriptor tableDescriptor = hbaseAdmin.getTableDescriptor(tableName);System.out.println();System.out.println(tableDescriptor);System.out.println();//hbaseConn.close();}//****************************删除列族****************************public static void del_TableFamily() throws java.lang.Exception {TableName tableName = TableName.valueOf("ns1:mytest_4");//取得一个要操作的表Table table = hbaseConn.getTable(tableName);//删除列族hbaseAdmin.deleteColumn(tableName, Bytes.toBytes("address"));//返回表的描述信息HTableDescriptor tableDescriptor = hbaseAdmin.getTableDescriptor(tableName);System.out.println();System.out.println(tableDescriptor);System.out.println();//hbaseConn.close();}//****************************查询表状态,删除表等****************************public static void tableZhuangtai() throws java.lang.Exception {TableName tableName = TableName.valueOf("ns1:mytest_4");System.out.println("表是否可用:" + hbaseAdmin.isTableEnabled(tableName)); //trueSystem.out.println("表是否禁用:" + hbaseAdmin.isTableDisabled(tableName)); //false//禁用表hbaseAdmin.disableTable(tableName);System.out.println("表是否禁用:" + hbaseAdmin.isTableDisabled(tableName)); //trueSystem.out.println("表是否存在:" + hbaseAdmin.tableExists(tableName)); //true//删除表hbaseAdmin.deleteTable(tableName);System.out.println("表是否存在:" + hbaseAdmin.tableExists(tableName)); //false}
}