windows下Java操作hbase-----HBase(伪分布)学习笔记
admin
2023-02-08 07:00:06
0

一、修改hosts文件

    进入C:\Windows\System32\drivers\etc目录

    编辑hosts文件,在底部添加  10.10.10.10(要跟linux机器中hosts里的ip一样) hbase

    保存退出

二、安装maven(方便管理jar包,也可以不安装)

    具体安装步骤参考http://blog.csdn.net/chenxuejiakaren/article/details/7938524

    在eclipse中安装请参考http://blog.csdn.net/wode_dream/article/details/38052639

三、创建项目

    新建->项目->选择maven文件夹下的maven project->类型选择maven-archetype-quickstart->

group id 是和artifact id 组合起来是完整的 package,一般artifact id 是项目名->建好之后,双击pom.xml->切换到最后一个卡pom.xml->

 在 dependencies 里追加这么一截 

 
org.apache.hbase
hbase-client
0.98.9-hadoop2
 

    保存就OK了!

如果报错:

    Missing artifact jdk.tools:jdk.tools

再追加这一截

   

    jdk.tools

    jdk.tools

    1.8

    system

    ${JAVA_HOME}/lib/tools.jar

    

四、操作hbase

    在包下面自己新建class

    

注意,调用的时候要直接

    DBhelper.方法();

package 包名;
import java.io.IOException;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HColumnDescriptor;
import org.apache.hadoop.hbase.HTableDescriptor;
import org.apache.hadoop.hbase.KeyValue;
import org.apache.hadoop.hbase.MasterNotRunningException;
import org.apache.hadoop.hbase.ZooKeeperConnectionException;
import org.apache.hadoop.hbase.client.Get;
import org.apache.hadoop.hbase.client.HBaseAdmin;
import org.apache.hadoop.hbase.client.HTable;
import org.apache.hadoop.hbase.client.Put;
import org.apache.hadoop.hbase.client.Result;
import org.apache.hadoop.hbase.client.ResultScanner;
import org.apache.hadoop.hbase.client.Scan;
import org.apache.hadoop.hbase.util.Bytes;
public class DBhelper {
 public static Configuration config = new Configuration();
 static{
config.set("hbase.zookeeper.property.clientPoint", "2181");
config.set("hbase.zookeeper.quorum", "hbase");
 }
 /*
  * 按条件查询value
  * 参数:表名,行,列簇,列名
  */
 public static void get(String tablename,String rowKey,String Family,String qualifier)throws Exception{
 HTable h=new HTable(config,tablename);
 System.out.println("开始获取------哔哔哔");
 Get get=new Get(rowKey.getBytes());
 get.addColumn(Family.getBytes(), qualifier.getBytes());
 Result r=h.get(get);
for(KeyValue kv:r.raw())
{
System.out.println("您要查的值为"+new String(kv.getValue()));
}
 }
 /*
  * 扫描table
  * 参数:表名
  */
 public static void scan(String tablename)throws Exception{
 HTable h=new HTable(config,tablename);
 System.out.println("开始扫描");
 ResultScanner rs=h.getScanner(new Scan(tablename.getBytes()));
 for(Result r:rs){
 for(KeyValue kv:r.raw()){
  System.out.println(new String(kv.getRow())+"   "+new String(kv.getFamily())+"   "+new String(kv.getQualifier())+"   "+new String(kv.getValue())+"   "+kv.getTimestamp());
 }
 }
 System.out.println("扫描结束");
 }
 /*
  * 添加或者修改数据
  * 参数:表名,行,列簇,列名,值
  */
 public static void put(String tablename,String rowKey,String Family,String qualifier,String value)throws Exception{
 HTable h=new HTable(config,tablename);
 System.out.println("- - - - - -  - -  - -  - 正在添加- - - - - - - - - - - - ");
 Put put =new Put(Bytes.toBytes(rowKey));
 put.add(Bytes.toBytes(Family), Bytes.toBytes(qualifier), Bytes.toBytes(value));
 h.put(put);
 System.out.println("- - - - - -  - -  - -  - 添加完成- - - - - - - - - - - - ");
 }
 
 
 /*
  * 删除table
  * 参数:表名
  */
 public static void Delete(String tablename) throws Exception{
 HBaseAdmin h=new HBaseAdmin(config);
 if(h.tableExists(tablename)){
 System.out.println("正在删除"+tablename);
    h.disableTable(tablename);
 h.deleteTable(tablename);
 System.out.println("删除成功");
 }else{
 System.out.println("傻啊!"+tablename+"不存在");
 }
 }
 
 
 /*
  * 创建table
  * 参数:表名+列簇
  */
 public static void Create(String tablename,String Col)throws Exception{
 HBaseAdmin admin=new HBaseAdmin(config);
if(admin.tableExists(tablename)){
 System.out.println(tablename+"已存在了!");
}else{
System.out.println("正在创建table:"+tablename);
HTableDescriptor htd=new HTableDescriptor(tablename);
System.out.println("创建成功!正在添加列簇:"+Col);
htd.addFamily(new HColumnDescriptor(Col));
admin.createTable(htd);
System.out.println("创建完成:/t 表名:"+tablename+"\t 列簇:"+Col);
}
 }
}

    

相关内容

热门资讯

德国总理:美国正在被伊朗羞辱 德国之声4月27日报道,德国总理默茨在访问一所学校时表示,在当前的持续冲突中,伊朗领导层正试图羞辱美...
理响中国|“长”歌以行,风云激... 光阴如梭,东方潮阔。这里是中国的长三角,世界的长三角。无论过去、现在还是未来,这片土地都因时代而生,...
白宫:特朗普及其国安团队开会讨... 新华社华盛顿4月27日电 美国白宫新闻秘书莱维特27日在记者会上证实,总统特朗普及其国家安全团队当天...
人民日报刊文:日本放开杀伤性武... 日本放开杀伤性武器出口推高地缘冲突风险(国际论坛)常思纯《人民日报》(2026年04月28日 第 0...
医疗保障法草案二审:明确生育保... 满足多样化健康保障需求本报记者 彭 波4月27日,医疗保障法草案二审稿提请十四届全国人大常委会第二十...
天津一景区发生自转旋翼机事故1... 澎湃新闻记者 吕新文中国民用航空华北地区管理局4月22日公布《豪客通航“10•1”天津长芦汉盐旅游区...
卡塔尔埃米尔与美国总统特朗普通... 当地时间24日,卡塔尔埃米尔塔米姆与美国总统特朗普通电话,重点就中东地区局势以及伊朗与美国谈判问题交...
男子30年前被扣押2859克黄... 澎湃新闻记者 王鑫家住辽宁省大连市的潘永嘉近日向澎湃新闻反映称,三十年前,他在大连周水子机场被盖州市...
商务部:取消反制欧盟两家金融机... 中华人民共和国商务部令二〇二六年 第1号鉴于欧盟已取消对中国两家金融机构的制裁措施,现公布《关于取消...
过去24小时共有5艘船只通过霍... 总台记者当地时间24日获悉,过去24小时内,共有5艘船只通过霍尔木兹海峡,其中包括一艘伊朗油轮。(总...