代码如下:
package com.el.hbase.test; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hbase.HBaseConfiguration; import org.apache.hadoop.hbase.HColumnDescriptor; import org.apache.hadoop.hbase.HTableDescriptor; import org.apache.hadoop.hbase.TableName; import org.apache.hadoop.hbase.client.*; import org.apache.hadoop.hbase.filter.*; import org.apache.hadoop.hbase.util.Bytes; import org.joda.time.DateTime; import java.util.ArrayList; import java.util.List; /** * Created by dengshengcai on 2017/7/5. */ public class Test1 { public static void main(String[] args) { Test1 test1 = new Test1(); // test1.dropTable(); // test1.createTable(); // test1.putData(); // test1.getData(); test1.scanTable(); } Configuration conf = HBaseConfiguration.create(); static final String TABLE_NAME ="testdsc_table1"; static final String COLUMN_FAMILY = "fa"; /** * 创建表 */ public void createTable() { try (Connection connection = ConnectionFactory.createConnection(conf); Admin admin = connection.getAdmin()) { HTableDescriptor table = new HTableDescriptor(TableName.valueOf(TABLE_NAME)); table.addFamily(new HColumnDescriptor(COLUMN_FAMILY)); if (!admin.tableExists(table.getTableName())) { System.out.print("Creating table. "); admin.createTable(table); System.out.println(" Done."); } admin.close(); connection.close(); } catch(Exception e) { e.printStackTrace(); } } /** * 删除表 */ public void dropTable() { try (Connection connection = ConnectionFactory.createConnection(conf); Admin admin = connection.getAdmin()) { HTableDescriptor table = new HTableDescriptor(TableName.valueOf(TABLE_NAME)); table.addFamily(new HColumnDescriptor(COLUMN_FAMILY)); if (admin.tableExists(table.getTableName())) { System.out.print("Dropping table. "); // a table must be disabled before it can be dropped admin.disableTable(table.getTableName()); admin.deleteTable(table.getTableName()); System.out.println(" Done."); } admin.close(); connection.close(); } catch(Exception e) { e.printStackTrace(); } } public void putData() { try (Connection connection = ConnectionFactory.createConnection(conf)) { Table table = connection.getTable(TableName.valueOf(TABLE_NAME)); //加入row key String dateStr; String se_dateStr; DateTime dt_up; DateTime dt_se; List<Put> list; int count = 3600 * 23; int times = 365 * 3; dt_up = new DateTime(2017, 1, 1, 0, 0, 1, 0); for (int t = 0; t < times; t++) { dt_se = dt_up.plusDays(1); dt_up = new DateTime(dt_se.getYear(), dt_se.getMonthOfYear(), dt_se.getDayOfMonth(), 0, 0, 1, 0); dt_se = dt_up.plusSeconds(3); list = new ArrayList<Put>(); for (int i = 0; i < count; i++) { dt_up = dt_up.plusSeconds(1); dt_se = dt_se.plusSeconds(1); dateStr = dt_up.toString("yyyy-MM-dd HH:mm:ss"); se_dateStr = dt_se.toString("yyyy-MM-dd HH:mm:ss"); Put p = new Put(Bytes.toBytes(dateStr + "," + se_dateStr)); p.addColumn(Bytes.toBytes(COLUMN_FAMILY), Bytes.toBytes("l1"), Bytes.toBytes("my first value中文测试一下 " + dateStr)); list.add(p); } System.out.println("执行了" + t + "次"); table.put(list); } connection.close(); } catch (Exception e) { e.printStackTrace(); } } public void getData() { try(Connection connection = ConnectionFactory.createConnection(conf)){ Table table = connection.getTable(TableName.valueOf(TABLE_NAME)); //加入row key Get g = new Get(Bytes.toBytes("myLittleRow")); Result r = table.get(g); byte [] value = r.getValue(Bytes.toBytes(COLUMN_FAMILY), Bytes.toBytes("l1")); // If we convert the value bytes, we should get back 'Some Value', the // value we inserted at this location. String valueStr = Bytes.toString(value); System.out.println("GET: " + valueStr); connection.close(); } catch(Exception e){ e.printStackTrace(); } } public void scanTable() { try(Connection connection = ConnectionFactory.createConnection(conf)){ Table table = connection.getTable(TableName.valueOf(TABLE_NAME)); //加入row key Scan s = new Scan(); Filter filter; // filter = new SingleColumnValueFilter(Bytes.toBytes(COLUMN_FAMILY), Bytes.toBytes("l1"), CompareFilter.CompareOp.EQUAL,new SubstringComparator("100009")); filter=new RowFilter(CompareFilter.CompareOp.EQUAL,new SubstringComparator("100009")); // FilterList filterList=new FilterList() s.addColumn(Bytes.toBytes(COLUMN_FAMILY), Bytes.toBytes("l1")); s.setStartRow(Bytes.toBytes("2017-01-21 00:00:00,0000-00-00 00:00:00")); s.setStopRow(Bytes.toBytes("2017-01-22 00:00:00,0000-00-00 00:00:00")); // s.setFilter(filter); int icount=0; ResultScanner scanner = table.getScanner(s); try { // Scanners return Result instances. // Now, for the actual iteration. One way is to use a while loop like so: for (Result rr = scanner.next(); rr != null; rr = scanner.next()) { // print out the row we found and the columns we were looking for // System.out.println("Found row: " + rr); // System.out.println("Value:"+ Bytes.toString(rr.value())); icount++; } } finally { // Make sure you close your scanners when you are done! // Thats why we have it inside a try/finally clause scanner.close(); System.out.println("总共:"+ icount + "行"); } connection.close(); } catch(Exception e){ e.printStackTrace(); } } }
步骤:
1.首先我将下载的HBase的安装包中的lib目录下的所有jar包引用到项目中(应该可以优化,无须这么多jar包,后期在进行)
2.我使用的是IDEA,代码结构如下图:
2.1加入了资源文件,并加入了hbase-site.xml,该文件记录zookeeper的服务器名称,值如下:

<?xml version="1.0" encoding="UTF-8"?> <configuration> <property> <name>hbase.zookeeper.quorum</name> <value>slave03,slave04,slave05</value> </property> </configuration>
2.2加入Test1的java端代码文件,文件中代码在上面已经给出。
3.已JAVA Application的方式运行上述代码即可。
注:主要是参考了HBase官方文档中的例子。