1.DDL
package cn.hadooplearning;
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.Admin;
import org.apache.hadoop.hbase.client.Connection;
import org.apache.hadoop.hbase.client.ConnectionFactory;
import org.apache.hadoop.hbase.regionserver.BloomType;
import org.junit.Before;
import org.junit.Test;
public class HBaseClientDDL {
private Connection conn = null;
@Before
public void getConn() throws Exception {
Configuration entries = HBaseConfiguration.create();
entries.set("hbase.zookeeper.quorum", "managerhd.bigdata,masterhd.bigdata,workerhd.bigdata");
entries.set("hbase.zookeeper.property.clientPort", "2181");
entries.set("zookeeper.znode.parent", "/hbase-unsecure");
entries.set("hbase.master", "managerhd.bigdata:16000");
conn = ConnectionFactory.createConnection(entries);
}
@Test
public void testCreateTable() throws Exception {
Admin admin = conn.getAdmin();
HTableDescriptor hTableDescriptor = new HTableDescriptor(TableName.valueOf("user_info"));
HColumnDescriptor hColumnDescriptor_1 = new HColumnDescriptor("base_info");
hColumnDescriptor_1.setMaxVersions(2);
HColumnDescriptor hColumnDescriptor_2 = new HColumnDescriptor("extra_info");
hTableDescriptor.addFamily(hColumnDescriptor_1);
hTableDescriptor.addFamily(hColumnDescriptor_2);
admin.createTable(hTableDescriptor);
System.out.println("创建HBase表完成!");
admin.close();
conn.close();
}
@Test
public void testAlterTable() throws Exception {
Admin admin = conn.getAdmin();
HTableDescriptor tableDescriptor = admin.getTableDescriptor(TableName.valueOf("user_info"));
HColumnDescriptor hColumnDescriptor = new HColumnDescriptor("other_info");
hColumnDescriptor.setBloomFilterType(BloomType.ROWCOL);
tableDescriptor.addFamily(hColumnDescriptor);
admin.modifyTable(TableName.valueOf("user_info"), tableDescriptor);
System.out.println("修改HBase表完成!");
admin.close();
conn.close();
}
@Test
public void testDropTable() throws Exception {
Admin admin = conn.getAdmin();
admin.disableTable(TableName.valueOf("user_info"));
admin.deleteTable(TableName.valueOf("user_info"));
System.out.println("删除HBase表完成!");
admin.close();
conn.close();
}
}
2.DML
package cn.hadooplearning;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.Cell;
import org.apache.hadoop.hbase.CellScanner;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.client.*;
import org.apache.hadoop.hbase.util.Bytes;
import org.junit.Before;
import org.junit.Test;
import java.util.ArrayList;
import java.util.Iterator;
public class HBaseClientDML {
private Connection conn = null;
@Before
public void getConn() throws Exception {
Configuration entries = HBaseConfiguration.create();
entries.set("hbase.zookeeper.quorum", "managerhd.bigdata,masterhd.bigdata,workerhd.bigdata");
entries.set("hbase.zookeeper.property.clientPort", "2181");
entries.set("zookeeper.znode.parent", "/hbase-unsecure");
entries.set("hbase.master", "managerhd.bigdata:16000");
conn = ConnectionFactory.createConnection(entries);
}
@Test
public void testPut() throws Exception {
Table table = conn.getTable(TableName.valueOf("user_info"));
Put put = new Put(Bytes.toBytes("001"));
put.addColumn(Bytes.toBytes("base_info"), Bytes.toBytes("username"), Bytes.toBytes("zhangsan"));
put.addColumn(Bytes.toBytes("base_info"), Bytes.toBytes("age"), Bytes.toBytes("18"));
put.addColumn(Bytes.toBytes("extra_info"), Bytes.toBytes("address"), Bytes.toBytes("Beijing"));
Put put2 = new Put(Bytes.toBytes("002"));
put2.addColumn(Bytes.toBytes("base_info"), Bytes.toBytes("username"), Bytes.toBytes("lisi"));
put2.addColumn(Bytes.toBytes("base_info"), Bytes.toBytes("age"), Bytes.toBytes("29"));
put2.addColumn(Bytes.toBytes("extra_info"), Bytes.toBytes("address"), Bytes.toBytes("Shanghai"));
ArrayList<Put> puts = new ArrayList<>();
puts.add(put);
puts.add(put2);
table.put(puts);
System.out.println("插入HBase表完成!");
table.close();
conn.close();
}
@Test
public void testManyPuts() throws Exception {
Table table = conn.getTable(TableName.valueOf("user_info"));
ArrayList<Put> puts = new ArrayList<>();
for (int i = 0; i <= 100; i++) {
Put put = new Put(Bytes.toBytes("" + i));
put.addColumn(Bytes.toBytes("base_info"), Bytes.toBytes("username"), Bytes.toBytes("zhang" + i));
put.addColumn(Bytes.toBytes("base_info"), Bytes.toBytes("age"), Bytes.toBytes((18 + i) + ""));
put.addColumn(Bytes.toBytes("extra_info"), Bytes.toBytes("address"), Bytes.toBytes("Beijing" + i));
puts.add(put);
}
table.put(puts);
System.out.println("批量插入HBase表完成!");
table.close();
conn.close();
}
@Test
public void testDelete() throws Exception {
Table table = conn.getTable(TableName.valueOf("user_info"));
Delete delete1 = new Delete(Bytes.toBytes("0"));
Delete delete2 = new Delete(Bytes.toBytes("1"));
Delete delete3 = new Delete(Bytes.toBytes("10"));
delete3.addColumn(Bytes.toBytes("extra_info"), Bytes.toBytes("address"));
ArrayList<Delete> dels = new ArrayList<>();
dels.add(delete1);
dels.add(delete2);
dels.add(delete3);
table.delete(dels);
System.out.println("删除HBase数据完成!");
table.close();
conn.close();
}
@Test
public void testGet() throws Exception {
Table table = conn.getTable(TableName.valueOf("user_info"));
Get get = new Get(Bytes.toBytes("100"));
Result result = table.get(get);
byte[] value = result.getValue(Bytes.toBytes("base_info"), Bytes.toBytes("username"));
System.out.println(new String(value));
System.out.println("-------------------------------------");
CellScanner cellScanner = result.cellScanner();
while (cellScanner.advance()) {
Cell cell = cellScanner.current();
byte[] rowArray = cell.getRowArray();
byte[] familyArray = cell.getFamilyArray();
byte[] qualifierArray = cell.getQualifierArray();
byte[] valueArray = cell.getValueArray();
System.out.println("行键:" + new String(rowArray, cell.getRowOffset(), cell.getRowLength()));
System.out.println("列族:" + new String(familyArray, cell.getFamilyOffset(), cell.getFamilyLength()));
System.out.println("列名:" + new String(qualifierArray, cell.getQualifierOffset(), cell.getQualifierLength()));
System.out.println("值:" + new String(valueArray, cell.getValueOffset(), cell.getValueLength()));
}
}
@Test
public void testScan() throws Exception {
Table table = conn.getTable(TableName.valueOf("user_info"));
Scan scan = new Scan(Bytes.toBytes("10"), Bytes.toBytes("11\001"));
ResultScanner scanner = table.getScanner(scan);
Iterator<Result> iterator = scanner.iterator();
while (iterator.hasNext()) {
Result result = iterator.next();
CellScanner cellScanner = result.cellScanner();
while (cellScanner.advance()) {
Cell cell = cellScanner.current();
byte[] rowArray = cell.getRowArray();
byte[] familyArray = cell.getFamilyArray();
byte[] qualifierArray = cell.getQualifierArray();
byte[] valueArray = cell.getValueArray();
System.out.println("行键: " + new String(rowArray, cell.getRowOffset(), cell.getRowLength()));
System.out.println("列族名: " + new String(familyArray, cell.getFamilyOffset(), cell.getFamilyLength()));
System.out.println("列名: " + new String(qualifierArray, cell.getQualifierOffset(), cell.getQualifierLength()));
System.out.println("value: " + new String(valueArray, cell.getValueOffset(), cell.getValueLength()));
}
System.out.println("----------------------");
}
}
}