根据mysql表中字段创建hbase表

本文介绍了一种通过代码实现的方法,从MySQL表中获取字段信息,并将其同步到HBase的列族中,包括创建表和处理字段数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

小狼今天很郁闷,我想要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();  
        } 


    }
	


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值