1 package com.bawei.hbase; 2 3 import org.apache.hadoop.conf.Configuration; 4 import org.apache.hadoop.hbase.HBaseConfiguration; 5 import org.apache.hadoop.hbase.HColumnDescriptor; 6 import org.apache.hadoop.hbase.HTableDescriptor; 7 import org.apache.hadoop.hbase.TableName; 8 import org.apache.hadoop.hbase.client.Admin; 9 import org.apache.hadoop.hbase.client.Connection; 10 import org.apache.hadoop.hbase.client.ConnectionFactory; 11 12 import java.io.IOException; 13 14 public class HBaseUtil { 15 //创建连接 静态的单例 16 private static Connection connection = null; 17 18 //初始化connection 19 static { 20 //创建配置对象 21 Configuration conf = HBaseConfiguration.create(); 22 //配zookeeper的主机名 23 conf.set("hbase.zookeeper.quorum", "hadoop102,hadoop103,hadoop104"); 24 //设置端口的参数 25 conf.set("hbase.zookeeper.property.clientPort", "2181"); 26 //实例化connection 27 try { 28 connection = ConnectionFactory.createConnection(conf); 29 } catch (IOException e) { 30 e.printStackTrace(); 31 } 32 33 } 34 35 //创建表 36 private static void createTable(String tableName, String... families) throws IOException { 37 38 //创建表先要获得admin对象 39 Admin admin = connection.getAdmin(); 40 41 try { 42 //判断表是否存在 43 if (admin.tableExists(TableName.valueOf(tableName))) { 44 System.out.println("table:" + tableName + "exists!"); 45 return; 46 } 47 //创建表的描述器 48 HTableDescriptor desc = new HTableDescriptor(TableName.valueOf(tableName)); 49 //添加列族的信息 因为列族可能是多个,所以需要遍历families 50 for (String family : families) { 51 //创建列族的描述器 52 HColumnDescriptor familyDesc = new HColumnDescriptor(family); 53 //需要传入列族的描述器 54 desc.addFamily(familyDesc); 55 } 56 //创建表的方法 需要表的描述器 57 admin.createTable(desc); 58 } finally { 59 admin.close(); 60 } 61 } 62 63 64 public static void main(String[] args) throws IOException { 65 createTable("user_info", "info", "data"); 66 } 67 }