根据mysql表中字段创建hbase表

来源:互联网 发布:mac循环计数 编辑:程序博客网 时间:2024/06/16 19:50

小狼今天很郁闷,我想要mysql中表的字段同步到hbase列族上去,非得在那dos上写命令行,今天想了一个方法,用代码完成

从mysql中获取字段名称

public static String mysql(String biaoming){StringBuffer sb = new StringBuffer();try {new Dbtool();Connection conn = Dbtool.getConnection();PreparedStatement statement = conn.prepareStatement("desc "+biaoming);ResultSet rs = statement.executeQuery();while(rs.next()){String name = rs.getString(1);String leixing = rs.getString(2);String isnull = rs.getString(3);String suoyin = rs.getString(4);sb.append(name+",");}} catch (Exception e) {e.printStackTrace();}return sb.toString();}


用mysql获取的字段创建hbase表

//创建表: public static void createTable(String tableName,String columnFarily)throws Exception{    System.out.println(columnFarily); try {               HBaseAdmin hBaseAdmin = new HBaseAdmin(con);               if (hBaseAdmin.tableExists(tableName)) {// 如果存在要创建的表,那么先删除,再创�?                   hBaseAdmin.disableTable(tableName);                   hBaseAdmin.deleteTable(tableName);               }               HTableDescriptor tableDescriptor = new HTableDescriptor(tableName);               String[] datas = columnFarily.split(",");             for(int i=0;i<datas.length;i++){             tableDescriptor.addFamily(new HColumnDescriptor(datas[i]));               }             hBaseAdmin.createTable(tableDescriptor);               System.out.println("创建表:"+tableName+"成功!");         } catch (MasterNotRunningException e) {               e.printStackTrace();           } catch (ZooKeeperConnectionException e) {               e.printStackTrace();           } catch (IOException e) {               e.printStackTrace();           }  }


main方法,运行,创建表

        private static Configuration con; private static String mysqlname = "betweens";private static String hbasename = "betweens";public static void main(String[] args) throws Exception {        try {          String names = mysql(mysqlname);                con =  HBaseConfiguration.create();        con.set("hbase.zookeeper.property.clientPort", "2181");        con.set("hbase.zookeeper.quorum", "slave1,slave2");        con.set("hbase.master", "master:600000");                if(names.matches(".*[,]")){        names = names.substring(0,names.length()-1);        createTable(hbasename,names);        }        } catch (Exception e) {              e.printStackTrace();          }     }


0 0