本地如何连接hbase数据库

发布网友 发布时间:2022-04-23 06:39

我来回答

3个回答

懂视网 时间:2022-05-02 11:28

static void main(String[] args) throws Exception { //得到配置 Configuration conf= HBaseConfiguration.create(); //连接zookeeper,就可以对hbase进行操作 conf.set("hbase.zookeeper.quorum", "itcast04:2181,itcast05:2181,itcast06:2181"); //使用java接口创建表 HBaseAdmin admin=new HBaseAdmin(conf); //指定表名 HTableDescriptor htd=new HTableDescriptor(TableName.valueOf("peoples")); //添加列族(info,data) HColumnDescriptor hcd_info=new HColumnDescriptor("info"); hcd_info.setMaxVersions(3); HColumnDescriptor hcd_data=new HColumnDescriptor("data"); htd.addFamily(hcd_info); htd.addFamily(hcd_data); //创建表 admin.createTable(htd); //关闭 admin.close(); }

二.使用java接口对hbase中的表进行crud操作

package cn.itcast.hbase;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import org.apache.hadoop.conf.Configuration;
//import org.apache.hadoop.fs.shell.CopyCommands.Get;
import org.apache.hadoop.hbase.client.*;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.HColumnDescriptor;
import org.apache.hadoop.hbase.HTableDescriptor;
import org.apache.hadoop.hbase.MasterNotRunningException;
import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.ZooKeeperConnectionException;
import org.apache.hadoop.hbase.client.HBaseAdmin;
import org.apache.hadoop.hbase.client.HTable;
import org.apache.hadoop.hdfs.DFSClient.Conf;
import org.junit.Before;
import org.junit.Test;

import org.apache.hadoop.hbase.util.Bytes;



public class HBaseDemo {

 
 private Configuration conf=null;
 
 //在所有方法之间初始化
 @Before
 public void init(){
 conf = HBaseConfiguration.create();
 conf.set("hbase.zookeeper.quorum", "itcast04:2181,itcast05:2181,itcast06:2181");
 }
 
 //-------------一次插入一条数据------------------
 //插入数据
 @Test
 public void testPut() throws Exception{
 //得到一个表对象
 HTable table =new HTable(conf, "peoples");
 //得到一个Put对象
 //将字符串转换为字符数组
 Put put=new Put(Bytes.toBytes("kr0001"));
 put.add(Bytes.toBytes("info"), Bytes.toBytes("name"), Bytes.toBytes("zhangsanfeng"));
 put.add(Bytes.toBytes("info"), Bytes.toBytes("age"), Bytes.toBytes("300"));
 put.add(Bytes.toBytes("info"), Bytes.toBytes("money"), Bytes.toBytes(3000));
 //在表中放入put对象 
 table.put(put);
 table.close();
 }
 
 //插入100万条,速度会很快(服务器几秒,自己的电脑1分半)对比Oracle,mysql
 //-------------一次插入海量数据------------------
 @Test
 public void testPutAll() throws IOException{
 
 //HTablePool pool=new HTablePool(config,10);
 HTable table =new HTable(conf, "peoples");
 //得到list对象
 List<Put> puts=new ArrayList<Put>(10000);
// //第一种方式
// //将put放入list中
// for(int i=1;i<=1000000;i++){
//  Put put=new Put(Bytes.toBytes("kr"+i));
//  put.add(Bytes.toBytes("info"), Bytes.toBytes("money"), Bytes.toBytes(""+i));
//  puts.add(put);
// }
// //在表中放入List
// table.put(puts);
// table.close();
 
 //第二种方式
 for(int i=1;i<=1000000;i++){
 Put put=new Put(Bytes.toBytes("kr"+i));
 put.add(Bytes.toBytes("info"), Bytes.toBytes("money"), Bytes.toBytes(""+i));
 puts.add(put);
 //每隔1w条放一次
 if(i%10000==0){
  table.put(puts);
  puts=new ArrayList<Put>(10000);//相当于清空
 }
 }
 table.put(puts);
 table.close();
 
 
 }
 //--------查询一个(不到1s)-----------------
 @Test
 public void testGet() throws IOException{
 HTable table =new HTable(conf, "peoples");
 Get get =new Get(Bytes.toBytes("kr999999"));
 //传get对象
 //返回result对象
 Result result=table.get(get);
 String r=Bytes.toString(result.getValue(Bytes.toBytes("info"), Bytes.toBytes("money")));
 System.out.println(r);
 table.close();
 }
 
 //--------查询多个-----------------
 @Test
 public void testScan() throws IOException{
 HTable table =new HTable(conf, "peoples");
 //创建scan对象(按照字典顺序排[))
 Scan scan=new Scan(Bytes.toBytes("kr299990"), Bytes.toBytes("kr300000"));
 //返回结果集
 ResultScanner scanner=table.getScanner(scan);
 for(Result result:scanner){
  String r=Bytes.toString(result.getValue(Bytes.toBytes("info"), Bytes.toBytes("money")));
  System.out.println(r);
 }
 table.close();
 }
 //--------更新(put将老版本覆盖,查询最新的)-----------------
 
 //--------删除成功--------------------
 @Test
 public void testDel() throws IOException{
  HTable table =new HTable(conf, "peoples");
 //创建delete对象
  Delete delete = new Delete(Bytes.toBytes("kr999999"));
  table.delete(delete);
  table.close();
 }
 
 
 
 //---------创建表---------------------------
 public static void main(String[] args) throws Exception {

 //使用java接口创建表
 HBaseAdmin admin=new HBaseAdmin(conf);
 //指定表名
 HTableDescriptor htd=new HTableDescriptor(TableName.valueOf("peoples"));
 //添加列族(info,data)
 HColumnDescriptor hcd_info=new HColumnDescriptor("info");
 hcd_info.setMaxVersions(3);
 HColumnDescriptor hcd_data=new HColumnDescriptor("data");
 htd.addFamily(hcd_info);
 htd.addFamily(hcd_data);
 //创建表
 admin.createTable(htd);
 //关闭
 admin.close();
 }

}

 

HBase连接数据库(集群)

标签:++   tostring   stp   hadoop   数组   ast   exception   更新   not   

热心网友 时间:2022-05-02 08:36

1.使用xshell或者crt等工具连接到hbase所在的服务器
2.然后通过ls查找到hbase
3.然后cd
切换到hbase目录下
4.bin/start-hbase.sh
5.bin/hbase
shell
6.list
查看该用户下的所有表格

热心网友 时间:2022-05-02 09:54

连接hbase数据库时的url怎么写
racle数据库>jdbc:oracle:thin:@localhost:1521:sid
sqlserver数据库>jdbc:microsoft:sqlserver://localhost:1433;databasename=sid
mysql数据库>jdbc:mysql://localhost:3306/sid
常用参数:useunicode=true&characterencoding=utf-8
如果在mysql集群搭建的时候,没有配置各节点的主从关系,那么这些节点都是平等的,就用
jdbc:mysql:loadbalance:
这种方式操作集群数据库.

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com