首先创建一个maven项目,然后导入以下依赖:
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>3.4.6</version>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-auth</artifactId>
<version>3.2.1</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.apache.hbase</groupId>
<artifactId>hbase-client</artifactId>
<version>2.2.5</version>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-client</artifactId>
<version>3.2.1</version>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-common</artifactId>
<version>3.2.1</version>
</dependency>
<dependency>
<groupId>org.apache.hbase</groupId>
<artifactId>hbase-server</artifactId>
<version>2.2.5</version>
</dependency>
<dependency>
<groupId>org.apache.hbase</groupId>
<artifactId>hbase-mapreduce</artifactId>
<version>2.2.5</version>
</dependency>
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.5</version>
</dependency>
<dependency>
<groupId>org.apache.phoenix</groupId>
<artifactId>phoenix-core</artifactId>
<version>5.0.0-HBase-2.0</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.5.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.6</version>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
1.hbase与java客户端的连接
public class HbaseDemo {
public static void main(String[] args) throws Exception {
Configuration conf = HBaseConfiguration.create();
conf.set("hbase.zookeeper.quorum","linux01:2181,linux02:2181,linux03:2181");
Connection conn = ConnectionFactory.createConnection(conf);
Admin admin = conn.getAdmin();
TableName[] tableNames = admin.listTableNames();
for (TableName tableName : tableNames) {
String tbname = tableName.getNameAsString();
String namespace = tableName.getNamespaceAsString();
System.out.println(namespace+"-"+tbname);
}
Table tb = conn.getTable(TableName.valueOf("tb_user2"));
tb.close();
admin.close();
conn.close();
}
}
2.将获取连接对象的方法封装起来方便调用
public class HbaseUtils {
public static Connection getConnection(){
Configuration conf = HBaseConfiguration.create();
conf.set("hbase.zookeeper.quorum","linux01:2181,linux02:2181,linux03:2181");
Connection conn = null;
try {
conn = ConnectionFactory.createConnection(conf);
} catch (IOException e) {
e.printStackTrace();
}
return conn;
}
}
3.创建名称空间的方法
public static void createNamespace() throws IOException {
Connection conn = HbaseUtils.getConnection();
Admin admin = conn.getAdmin();
NamespaceDescriptor doit = admin.getNamespaceDescriptor("doit");
if (doit!=null){
TableName[] doits = admin.listTableNamesByNamespace("doit");
for (TableName tableName : doits) {
admin.disableTable(tableName);
admin.deleteTable(tableName);
}
admin.deleteNamespace("doit");
}
NamespaceDescriptor.Builder doit1 = NamespaceDescriptor.create("doit");
Map<String,String> map = new HashMap<>();
map.put("author","bo");
map.put("createTime",System.currentTimeMillis()+"");
doit1.addConfiguration(map);
NamespaceDescriptor namespaceDescriptor = doit1.build();
admin.createNamespace(namespaceDescriptor);
admin.close();
conn.close();
}
4.创建表的方法
public static void createTable() throws IOException {
Connection conn = HbaseUtils.getConnection();
Admin admin = conn.getAdmin();
TableDescriptorBuilder tb_javaBuider = TableDescriptorBuilder.newBuilder(TableName.valueOf("tb_java"));
ColumnFamilyDescriptorBuilder columnFamilyDescriptorBuilder = ColumnFamilyDescriptorBuilder.newBuilder("cf1".getBytes());
columnFamilyDescriptorBuilder.setMaxVersions(3);
columnFamilyDescriptorBuilder.setTimeToLive(60*60);
ColumnFamilyDescriptor cf1 = columnFamilyDescriptorBuilder.build();
ColumnFamilyDescriptorBuilder columnFamilyDescriptorBuilder2 = ColumnFamilyDescriptorBuilder.newBuilder("cf2".getBytes());
ColumnFamilyDescriptor cf2 = columnFamilyDescriptorBuilder2.build();
List<ColumnFamilyDescriptor> list = new ArrayList<>();
list.add(cf1);
list.add(cf2);
tb_javaBuider.setColumnFamilies(list);
TableDescriptor build = tb_javaBuider.build();
admin.createTable(build);
admin.close();
conn.close();
}
5.创建预分region表的方法
public static void createRegionTable() throws IOException {
Connection connection = HbaseUtils.getConnection();
Admin admin = connection.getAdmin();
TableDescriptorBuilder tb_regionBuilder = TableDescriptorBuilder.newBuilder(TableName.valueOf("tb_region"));
ArrayList<ColumnFamilyDescriptor> cf = new ArrayList<>();
ColumnFamilyDescriptor cf1 = ColumnFamilyDescriptorBuilder.newBuilder("cf1".getBytes()).build();
ColumnFamilyDescriptor cf2 = ColumnFamilyDescriptorBuilder.newBuilder("cf2".getBytes()).build();
cf.add(cf1);
cf.add(cf2);
tb_regionBuilder.setColumnFamilies(cf);
TableDescriptor build = tb_regionBuilder.build();
byte[][] bytes = new byte[][]{"a3".getBytes(),"a5".getBytes(),"a8".getBytes()};
admin.createTable(build,bytes);
admin.close();
connection.close();
}
6.增加列族的方法
public static void addColumnFamily() throws IOException {
Connection connection = HbaseUtils.getConnection();
Admin admin = connection.getAdmin();
ColumnFamilyDescriptor cf3 = ColumnFamilyDescriptorBuilder.newBuilder("cf3".getBytes()).build();
admin.addColumnFamilyAsync(TableName.valueOf("tb_region"),cf3);
admin.close();
connection.close();
}
7.修改列族属性的方法
public static void modifyColumnFamily() throws IOException {
Connection connection = HbaseUtils.getConnection();
Admin admin = connection.getAdmin();
ColumnFamilyDescriptorBuilder columnFamilyDescriptorBuilder = ColumnFamilyDescriptorBuilder.newBuilder("cf3".getBytes());
columnFamilyDescriptorBuilder.setMaxVersions(5);
columnFamilyDescriptorBuilder.setTimeToLive(60*60*24*7);
ColumnFamilyDescriptor cf3 = columnFamilyDescriptorBuilder.build();
admin.modifyColumnFamily(TableName.valueOf("tb_region"),cf3);
}```