HbaseCreate--建表
1 package Hbase; 2 3 import java.io.IOException; 4 5 6 import org.apache.hadoop.conf.Configuration; 7 import org.apache.hadoop.hbase.HBaseConfiguration; 8 import org.apache.hadoop.hbase.HColumnDescriptor; 9 import org.apache.hadoop.hbase.HTableDescriptor;10 11 import org.apache.hadoop.hbase.MasterNotRunningException;12 import org.apache.hadoop.hbase.ZooKeeperConnectionException;13 import org.apache.hadoop.hbase.client.HBaseAdmin;14 15 public class HbaseCreate {16 17 public static Configuration configuration;18 static {19 configuration = HBaseConfiguration.create();20 configuration.set("hbase.zookeeper.property.clientPort", "2181");21 configuration.set("hbase.zookeeper.quorum", "192.168.121.132");22 configuration.set("hbase.master", "192.168.121.132:60000");23 }24 25 public static void main(String[] args) {26 createTable("ecpcibimbqm:instrument");27 }28 public static void createTable(String tableName) {29 System.out.println("start create table ......");30 try {31 HBaseAdmin hBaseAdmin = new HBaseAdmin(configuration);32 if (hBaseAdmin.tableExists(tableName)) {33 hBaseAdmin.disableTable(tableName);34 hBaseAdmin.deleteTable(tableName);35 System.out.println(tableName + " is exist,detele....");36 }37 HTableDescriptor tableDescriptor = new HTableDescriptor(tableName);38 tableDescriptor.addFamily(new HColumnDescriptor("d"));39 tableDescriptor.addFamily(new HColumnDescriptor("i"));40 hBaseAdmin.createTable(tableDescriptor);41 } catch (MasterNotRunningException e) {42 e.printStackTrace();43 } catch (ZooKeeperConnectionException e) {44 e.printStackTrace();45 } catch (IOException e) {46 e.printStackTrace();47 }48 System.out.println("end create table ......");49 }50 }
HbaseInsert--插入
1 package Hbase; 2 3 import java.io.IOException; 4 5 6 import org.apache.hadoop.conf.Configuration; 7 import org.apache.hadoop.hbase.HBaseConfiguration; 8 9 import org.apache.hadoop.hbase.client.HTable;10 import org.apache.hadoop.hbase.client.HTablePool;11 import org.apache.hadoop.hbase.client.Put;12 13 14 public class HbaseInsert {15 16 public static Configuration configuration;17 static {18 configuration = HBaseConfiguration.create();19 configuration.set("hbase.zookeeper.property.clientPort", "2181");20 configuration.set("hbase.zookeeper.quorum", "192.168.121.132");21 configuration.set("hbase.master", "192.168.121.132:60000");22 }23 24 public static void main(String[] args) throws IOException {25 insertData("ecpcibimbqm:instrument");26 }27 public static void insertData(String tableName) throws IOException { 28 System.out.println("start insert data ......"); 29 //HTablePool pool = new HTablePool(configuration, 1000); 30 HTable table = new HTable(configuration, tableName); 31 Put put = new Put("Relationship".getBytes());32 put.add("d".getBytes(), "effectfrom".getBytes(), "2017".getBytes());33 //put.add("d:effectto".getBytes(), null, "2019".getBytes()); 34 try { 35 table.put(put); 36 } catch (IOException e) { 37 e.printStackTrace(); 38 } 39 System.out.println("end insert data ......"); 40 } 41 }
HbaseCI-建表加插入
1 package Hbase; 2 3 import java.io.IOException; 4 5 import org.apache.hadoop.conf.Configuration; 6 import org.apache.hadoop.hbase.HBaseConfiguration; 7 import org.apache.hadoop.hbase.HColumnDescriptor; 8 import org.apache.hadoop.hbase.HTableDescriptor; 9 import org.apache.hadoop.hbase.client.HBaseAdmin; 10 import org.apache.hadoop.hbase.client.HTable; 11 import org.apache.hadoop.hbase.client.Put; 12 import org.apache.hadoop.hbase.util.Bytes; 13 14 public class HbaseCI { 15 // 声明静态配置 16 public static Configuration configuration; 17 static { 18 configuration = HBaseConfiguration.create(); 19 configuration.set("hbase.zookeeper.property.clientPort", "2181"); 20 configuration.set("hbase.zookeeper.quorum", "192.168.121.132"); 21 configuration.set("hbase.master", "192.168.121.132:60000"); 22 } 23 /* 24 * 创建表 25 * 26 * @tableName 表名 27 * 28 * @family 列族列表 29 */ 30 public static void creatTable(String tableName, String[] family) throws Exception { 31 HBaseAdmin admin = new HBaseAdmin(configuration); 32 HTableDescriptor desc = new HTableDescriptor(tableName); 33 for (int i = 0; i < family.length; i++) { 34 desc.addFamily(new HColumnDescriptor(family[i])); 35 } 36 if (admin.tableExists(tableName)) { 37 System.out.println("table Exists!"); 38 System.exit(0); 39 } else { 40 admin.createTable(desc); 41 System.out.println("create table Success!"); 42 } 43 } 44 45 /* 46 * 为表添加数据(适合知道有多少列族的固定表) 47 * 48 * @rowKey rowKey 49 * 50 * @tableName 表名 51 * 52 * @column 第一个列族列表 53 * 54 * @value 第一个列的值的列表 55 * 56 * @column2 第二个列族列表 57 * 58 * @value2 第二个列的值的列表 59 */ 60 public static void addData(String tableName, String rowKey,String[] column, String[] value) 61 throws IOException { 62 Put put = new Put(Bytes.toBytes(rowKey));// 设置rowkey 63 HTable table = new HTable(configuration, Bytes.toBytes(tableName));// HTabel负责跟记录相关的操作如增删改查等// 64 // 获取表 65 HColumnDescriptor[] columnFamilies = table.getTableDescriptor().getColumnFamilies(); // 获取所有的列族 66 for (int i = 0; i < columnFamilies.length; i++) { 67 String familyName = columnFamilies[i].getNameAsString(); // 获取列族名 68 if (familyName.equals("d")) { // article列族put数据 69 for (int j = 0; j < column.length; j++) { 70 put.add(Bytes.toBytes(familyName), 71 Bytes.toBytes(column[j]), Bytes.toBytes(value[j])); 72 } 73 } 74 } 75 table.put(put); 76 System.out.println("add data Success!"); 77 } 78 public static void main(String[] args) throws Exception { 79 80 // 创建表 81 String tableName = "ecpcibimbqm:quote"; 82 String[] family = { "d" }; 83 creatTable(tableName, family); 84 85 // 为表添加数据 86 87 String[] column = { "permid", "subject"}; 88 String[] value = { 89 "Head First HBase", 90 "HBase is the Hadoop database. Use it when you need random, realtime read/write access to your Big Data." 91 }; 92 String[] column1 = { "uuid", "objectject"}; 93 String[] value1 = { 94 "212312312312312", 95 "aaaaaaaaaaaaa" 96 }; 97 addData("ecpcibimbqm:quote", "Relationship", column, value); 98 addData("ecpcibimbqm:quote", "Adminstatus", column1, value1); 99 100 }101 }
HbaseScan--查看整个表
1 package Hbase; 2 3 import java.io.IOException; 4 5 6 import org.apache.hadoop.conf.Configuration; 7 import org.apache.hadoop.hbase.HBaseConfiguration; 8 9 import org.apache.hadoop.hbase.KeyValue;10 11 import org.apache.hadoop.hbase.client.Get;12 13 import org.apache.hadoop.hbase.client.HTable;14 15 import org.apache.hadoop.hbase.client.Result;16 17 import org.apache.hadoop.hbase.util.Bytes;18 19 public class HbaseScan {20 public static Configuration configuration;21 static {22 configuration = HBaseConfiguration.create();23 configuration.set("hbase.zookeeper.property.clientPort", "2181");24 configuration.set("hbase.zookeeper.quorum", "192.168.121.132");25 configuration.set("hbase.master", "192.168.121.132:60000");26 }27 public static void selectByRowKey(String tablename,String rowKey) throws IOException{28 HTable table=new HTable(configuration,tablename);29 Get g = new Get(Bytes.toBytes(rowKey));30 Result r=table.get(g);31 for(KeyValue kv:r.raw()){32 System.out.println("family: "+ Bytes.toString(kv.getFamily()));33 System.out.println("column:"+ Bytes.toString(kv.getQualifier()));34 System.out.println("value:"+ Bytes.toString(kv.getValue()));35 }36 }37 38 public static void main(String[] args) throws Exception {39 40 selectByRowKey("ecpcibimbqm:quote","Relationship");41 42 }43 }
HbaseZH--hbase综合使用常用API
1 package Hbase; 2 3 import java.io.IOException; 4 import java.util.Iterator; 5 import java.util.List; 6 7 import org.apache.hadoop.conf.Configuration; 8 import org.apache.hadoop.hbase.HBaseConfiguration; 9 import org.apache.hadoop.hbase.HColumnDescriptor; 10 import org.apache.hadoop.hbase.HTableDescriptor; 11 import org.apache.hadoop.hbase.KeyValue; 12 import org.apache.hadoop.hbase.client.Delete; 13 import org.apache.hadoop.hbase.client.Get; 14 import org.apache.hadoop.hbase.client.HBaseAdmin; 15 import org.apache.hadoop.hbase.client.HTable; 16 import org.apache.hadoop.hbase.client.Put; 17 import org.apache.hadoop.hbase.client.Result; 18 import org.apache.hadoop.hbase.client.ResultScanner; 19 import org.apache.hadoop.hbase.client.Scan; 20 import org.apache.hadoop.hbase.util.Bytes; 21 22 public class HbaseZH { 23 // 声明静态配置 24 public static Configuration conf; 25 static { 26 conf = HBaseConfiguration.create(); 27 conf.set("hbase.zookeeper.property.clientPort", "2181"); 28 conf.set("hbase.zookeeper.quorum", "192.168.121.132"); 29 conf.set("hbase.master", "192.168.121.132:60000"); 30 } 31 /* 32 * 创建表 33 * @tableName 表名 34 * @family 列族列表 35 */ 36 public static void creatTable(String tableName, String[] family) throws Exception { 37 HBaseAdmin admin = new HBaseAdmin(conf); 38 HTableDescriptor desc = new HTableDescriptor(tableName); 39 for (int i = 0; i < family.length; i++) { 40 desc.addFamily(new HColumnDescriptor(family[i])); 41 } 42 if (admin.tableExists(tableName)) { 43 System.out.println("table Exists!"); 44 System.exit(0); 45 } else { 46 admin.createTable(desc); 47 System.out.println("create table Success!"); 48 } 49 } 50 /* 51 * 为表添加数据(适合知道有多少列族的固定表) 52 * @rowKey rowKey 53 * @tableName 表名 54 * @column1 第一个列族列表 55 * @value1 第一个列的值的列表 56 * @column2 第二个列族列表 57 * @value2 第二个列的值的列表 58 */ 59 public static void addData(String tableName, String rowKey,String[] column1, String[] value1) throws IOException { 60 Put put = new Put(Bytes.toBytes(rowKey));// 设置rowkey 61 HTable table = new HTable(conf, tableName);// 获取表 62 HColumnDescriptor[] columnFamilies = table.getTableDescriptor().getColumnFamilies(); // 获取所有的列族 63 for (int i = 0; i < columnFamilies.length; i++) { 64 String familyName = columnFamilies[i].getNameAsString(); // 获取列族名 65 if (familyName.equals("d")) { // article列族put数据 66 for (int j = 0; j < column1.length; j++) { 67 put.add(Bytes.toBytes(familyName),Bytes.toBytes(column1[j]), Bytes.toBytes(value1[j])); 68 } 69 } 70 } 71 table.put(put); 72 System.out.println("add data Success!"); 73 } 74 /* 75 * 根据rwokey查询 76 * @rowKey rowKey 77 * @tableName 表名 78 */ 79 public static Result getResult(String tableName, String rowKey) throws IOException { 80 Get get = new Get(Bytes.toBytes(rowKey)); 81 HTable table = new HTable(conf, tableName);// 获取表 82 Result result = table.get(get); 83 for (KeyValue kv : result.list()) { 84 System.out.println("family:" + Bytes.toString(kv.getFamily())); 85 System.out.println("qualifier:" + Bytes.toString(kv.getQualifier())); 86 System.out.println("value:" + Bytes.toString(kv.getValue())); 87 System.out.println("Timestamp:" + kv.getTimestamp()); 88 System.out.println("-------------------------------------------"); 89 } 90 return result; 91 } 92 93 /* 94 * 遍历查询hbase表 95 * @tableName 表名 96 */ 97 public static void getResultScann(String tableName) throws IOException { 98 Scan scan = new Scan(); 99 ResultScanner rs = null; 100 HTable table = new HTable(conf, tableName); 101 try { 102 rs = table.getScanner(scan); 103 for (Result r : rs) { 104 for (KeyValue kv : r.list()) { 105 System.out.println("family:" + Bytes.toString(kv.getFamily())); 106 System.out.println("qualifier:" + Bytes.toString(kv.getQualifier())); 107 System.out.println("value:" + Bytes.toString(kv.getValue())); 108 System.out.println("timestamp:" + kv.getTimestamp()); 109 System.out.println("-------------------------------------------"); 110 } 111 } 112 } finally { 113 rs.close(); 114 } 115 } 116 117 /* 118 * 查询表中的某一列 119 * @tableName 表名 120 * @rowKey rowKey 121 */ 122 public static void getResultByColumn(String tableName, String rowKey,String familyName, String columnName) throws IOException { 123 HTable table = new HTable(conf, tableName); 124 Get get = new Get(Bytes.toBytes(rowKey)); 125 get.addColumn(Bytes.toBytes(familyName), Bytes.toBytes(columnName)); // 获取指定列族和列修饰符对应的列 126 Result result = table.get(get); 127 for (KeyValue kv : result.list()) { 128 System.out.println("family:" + Bytes.toString(kv.getFamily())); 129 System.out.println("qualifier:" + Bytes.toString(kv.getQualifier())); 130 System.out.println("value:" + Bytes.toString(kv.getValue())); 131 System.out.println("Timestamp:" + kv.getTimestamp()); 132 System.out.println("-------------------------------------------"); 133 } 134 } 135 /* 136 * 更新表中的某一列 137 * @tableName 表名 138 * @rowKey rowKey 139 * @familyName 列族名 140 * @columnName 列名 141 * @value 更新后的值 142 */ 143 public static void updateTable(String tableName, String rowKey,String familyName, String columnName, String value) 144 throws IOException { 145 HTable table = new HTable(conf, tableName); 146 Put put = new Put(Bytes.toBytes(rowKey)); 147 put.add(Bytes.toBytes(familyName), Bytes.toBytes(columnName),Bytes.toBytes(value)); 148 table.put(put); 149 System.out.println("update table Success!"); 150 } 151 /* 152 * 查询某列数据的多个版本 153 * @tableName 表名 154 * @rowKey rowKey 155 * @familyName 列族名 156 * @columnName 列名 157 */ 158 public static void getResultByVersion(String tableName, String rowKey,String familyName, String columnName) throws IOException { 159 HTable table = new HTable(conf, tableName); 160 Get get = new Get(Bytes.toBytes(rowKey)); 161 get.addColumn(Bytes.toBytes(familyName), Bytes.toBytes(columnName)); 162 get.setMaxVersions(5); 163 Result result = table.get(get); 164 for (KeyValue kv : result.list()) { 165 System.out.println("family:" + Bytes.toString(kv.getFamily())); 166 System.out.println("qualifier:" + Bytes.toString(kv.getQualifier())); 167 System.out.println("value:" + Bytes.toString(kv.getValue())); 168 System.out.println("Timestamp:" + kv.getTimestamp()); 169 System.out.println("-------------------------------------------"); 170 } 171 List results = table.get(get).list(); Iterator it = results.iterator(); while (it.hasNext()) { 172 System.out.println(it.next().toString()); } 173 } 174 /* 175 * 删除指定的列 176 * @tableName 表名 177 * @rowKey rowKey 178 * @familyName 列族名 179 * @columnName 列名 180 */ 181 public static void deleteColumn(String tableName, String rowKey,String falilyName, String columnName) throws IOException { 182 HTable table = new HTable(conf, tableName); 183 Delete deleteColumn = new Delete(Bytes.toBytes(rowKey)); 184 deleteColumn.deleteColumns(Bytes.toBytes(falilyName),Bytes.toBytes(columnName)); 185 table.delete(deleteColumn); 186 System.out.println(falilyName + ":" + columnName + "is deleted!"); 187 } 188 /* 189 * 删除指定的列 190 * @tableName 表名 191 * @rowKey rowKey 192 */ 193 public static void deleteAllColumn(String tableName, String rowKey) throws IOException { 194 HTable table = new HTable(conf, tableName); 195 Delete deleteAll = new Delete(Bytes.toBytes(rowKey)); 196 table.delete(deleteAll); 197 System.out.println("all columns are deleted!"); 198 } 199 /* 200 * 删除表 201 * @tableName 表名 202 */ 203 public static void deleteTable(String tableName) throws IOException { 204 HBaseAdmin admin = new HBaseAdmin(conf); 205 admin.disableTable(tableName); 206 admin.deleteTable(tableName); 207 System.out.println(tableName + "is deleted!"); 208 } 209 public static void main(String[] args) throws Exception { 210 // 创建表 211 String tableName = "ecpcibimbqm:quote"; String[] family = { "d","dd" }; 212 creatTable(tableName,family); 213 // 为表添加数据 214 String[] column1 = { "permid", "object", "subject" }; 215 String[] value1 = {"Head First HBase", 216 "HBase is the Hadoop database. Use it when you need random, realtime read/write access to your Big Data.", 217 "Hadoop,HBase,NoSQL" }; 218 String[] column2 = { "time", "data" }; 219 String[] value2 = { "nicholas", "lee" }; 220 addData(tableName, "Relationship", column1, value1); 221 addData(tableName, "Admainstatus", column2, value2); 222 // 删除一列 223 deleteColumn(tableName, "Relationship", "d", "permid"); 224 // 删除所有列 225 deleteAllColumn(tableName, "Admainstatus"); 226 //删除表 227 deleteTable(tableName); 228 // 查询 229 getResult(tableName, "Relationship"); 230 // 查询某一列的值 231 getResultByColumn(tableName, "Relationship", "d", "object"); 232 updateTable(tableName, "Relationship", "d", "object","update"); 233 // 遍历查询 234 getResultScann(tableName); 235 // 查询某列的多版本 236 getResultByVersion(tableName, "Relationship", "d", "subject"); 237 } 238 }
hbase执行过程不执行MapReduce,直接java编译就可以
/usr/local/jdk1.7.0_25/bin/javac Hbase.java
/usr/local/jdk1.7.0_25/bin/java Hbase