java连接hbase等待(java连接hbase集群)

本篇文章给大家谈谈java连接hbase等待,以及java连接hbase集群对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

1、hbase java2、如何使用Java API操作Hbase3、求助帖,hbase新手,windows中的java怎么连接linux中的hbase

hbase java

hbase java是什么,让我们一起了解一下?

HBase是一个分布式的、面向列的开源数据库,具有高可靠性、高性能、面向列、可伸缩的分布式存储系统,利用HBase技术可在廉价PC Server上搭建起大规模结构化存储集群。

如何使用JAVA语言操作Hbase、整合Hbase?

可分为五步骤:

步骤1:新创建一个Java Project 。

步骤2:导入JAR包,在工程根目录下新建一个“lib”文件夹,将官方文档中的lib目录下的jar全部导入。

步骤3:修改开发机的hosts文件,在文件莫为增加一行虚拟机IP的映射信息。

步骤4:修改虚拟机的配置文件,修改虚拟机的设备名称,名称需要与之前两个配置文件的映射名称一致。

步骤5:实现查询、新建、删除等。

案例代码展示如下:

package hbase; import java.io.IOException; import java.util.ArrayList; import java.util.List; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hbase.Cell; import org.apache.hadoop.hbase.HBaseConfiguration; import org.apache.hadoop.hbase.HColumnDescriptor; import org.apache.hadoop.hbase.HTableDescriptor; import org.apache.hadoop.hbase.TableName; import org.apache.hadoop.hbase.client.Admin; import org.apache.hadoop.hbase.client.Connection; import org.apache.hadoop.hbase.client.ConnectionFactory; import org.apache.hadoop.hbase.client.Delete; import org.apache.hadoop.hbase.client.Get; 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.client.Table; import org.apache.hadoop.hbase.exceptions.DeserializationException; import org.apache.hadoop.hbase.filter.Filter; import org.apache.hadoop.hbase.filter.SingleColumnValueFilter; import org.apache.hadoop.hbase.filter.CompareFilter.CompareOp; import org.apache.hadoop.hbase.util.Bytes; import org.junit.Before; import org.junit.Test; public class HBaseDemo { // 与HBase数据库的连接对象 Connection connection; // 数据库元数据操作对象 Admin admin; @Before public void setUp() throws Exception { // 取得一个数据库连接的配置参数对象 Configuration conf = HBaseConfiguration.create(); // 设置连接参数:HBase数据库所在的主机IP conf.set(“hbase.zookeeper.quorum”, “192.168.137.13”); // 设置连接参数:HBase数据库使用的端口 conf.set(“hbase.zookeeper.property.clientPort”, “2181”); // 取得一个数据库连接对象 connection = ConnectionFactory.createConnection(conf); // 取得一个数据库元数据操作对象 admin = connection.getAdmin(); } /**     * 创建表     */ public void createTable() throws IOException{ System.out.println(“—————创建表 START—————–“); // 数据表表名 String tableNameString = “t_book”; // 新建一个数据表表名对象 TableName tableName = TableName.valueOf(tableNameString); // 如果需要新建的表已经存在 if(admin.tableExists(tableName)){ System.out.println(“表已经存在!”); } // 如果需要新建的表不存在 else{ // 数据表描述对象 HTableDescriptor hTableDescriptor = new HTableDescriptor(tableName); // 列族描述对象 HColumnDescriptor family= new HColumnDescriptor(“base”);; // 在数据表中新建一个列族 hTableDescriptor.addFamily(family); // 新建数据表 admin.createTable(hTableDescriptor); } System.out.println(“—————创建表 END—————–“); } /**     * 查询整表数据     */ @Test public void queryTable() throws IOException{ System.out.println(“—————查询整表数据 START—————–“); // 取得数据表对象 Table table = connection.getTable(TableName.valueOf(“t_book”)); // 取得表中所有数据 ResultScanner scanner = table.getScanner(new Scan()); // 循环输出表中的数据 for (Result result : scanner) { byte[] row = result.getRow(); System.out.println(“row key is:” + new String(row)); List  listCells = result.listCells(); for (Cell cell : listCells) { byte[] familyArray = cell.getFamilyArray(); byte[] qualifierArray = cell.getQualifierArray(); byte[] valueArray = cell.getValueArray(); System.out.println(“row value is:” + new String(familyArray) + new String(qualifierArray) + new String(valueArray)); } } System.out.println(“—————查询整表数据 END—————–“); } /**     * 按行键查询表数据     */ @Test public void queryTableByRowKey() throws IOException{ System.out.println(“—————按行键查询表数据 START—————–“); // 取得数据表对象 Table table = connection.getTable(TableName.valueOf(“t_book”)); // 新建一个查询对象作为查询条件 Get get = new Get(“row8”.getBytes()); // 按行键查询数据 Result result = table.get(get); byte[] row = result.getRow(); System.out.println(“row key is:” + new String(row)); List  listCells = result.listCells(); for (Cell cell : listCells) { byte[] familyArray = cell.getFamilyArray(); byte[] qualifierArray = cell.getQualifierArray(); byte[] valueArray = cell.getValueArray(); System.out.println(“row value is:” + new String(familyArray) + new String(qualifierArray) + new String(valueArray)); } System.out.println(“—————按行键查询表数据 END—————–“); } /**     * 按条件查询表数据     */ @Test public void queryTableByCondition() throws IOException{ System.out.println(“—————按条件查询表数据 START—————–“); // 取得数据表对象 Table table = connection.getTable(TableName.valueOf(“t_book”)); // 创建一个查询过滤器 Filter filter = new SingleColumnValueFilter(Bytes.toBytes(“base”), Bytes.toBytes(“name”), CompareOp.EQUAL, Bytes.toBytes(“bookName6”)); // 创建一个数据表扫描器 Scan scan = new Scan(); // 将查询过滤器加入到数据表扫描器对象 scan.setFilter(filter); // 执行查询操作,并取得查询结果 ResultScanner scanner = table.getScanner(scan); // 循环输出查询结果 for (Result result : scanner) { byte[] row = result.getRow(); System.out.println(“row key is:” + new String(row)); List  listCells = result.listCells(); for (Cell cell : listCells) { byte[] familyArray = cell.getFamilyArray(); byte[] qualifierArray = cell.getQualifierArray(); byte[] valueArray = cell.getValueArray(); System.out.println(“row value is:” + new String(familyArray) + new String(qualifierArray) + new String(valueArray)); } } System.out.println(“—————按条件查询表数据 END—————–“); } /**     * 清空表     */ @Test public void truncateTable() throws IOException{ System.out.println(“—————清空表 START—————–“); // 取得目标数据表的表名对象 TableName tableName = TableName.valueOf(“t_book”); // 设置表状态为无效 admin.disableTable(tableName); // 清空指定表的数据 admin.truncateTable(tableName, true); System.out.println(“—————清空表 End—————–“); } /**     * 删除表     */ @Test public void deleteTable() throws IOException{ System.out.println(“—————删除表 START—————–“); // 设置表状态为无效 admin.disableTable(TableName.valueOf(“t_book”)); // 删除指定的数据表 admin.deleteTable(TableName.valueOf(“t_book”)); System.out.println(“—————删除表 End—————–“); } /**     * 删除行     */ @Test public void deleteByRowKey() throws IOException{ System.out.println(“—————删除行 START—————–“); // 取得待操作的数据表对象 Table table = connection.getTable(TableName.valueOf(“t_book”)); // 创建删除条件对象 Delete delete = new Delete(Bytes.toBytes(“row2”)); // 执行删除操作 table.delete(delete); System.out.println(“—————删除行 End—————–“); } /**     * 删除行(按条件)     */ @Test public void deleteByCondition() throws IOException, DeserializationException{ System.out.println(“—————删除行(按条件) START—————–“); // 步骤1:调用queryTableByCondition()方法取得需要删除的数据列表 // 步骤2:循环步骤1的查询结果,对每个结果调用deleteByRowKey()方法 System.out.println(“—————删除行(按条件) End—————–“); } /**     * 新建列族     */ @Test public void addColumnFamily() throws IOException{ System.out.println(“—————新建列族 START—————–“); // 取得目标数据表的表名对象 TableName tableName = TableName.valueOf(“t_book”); // 创建列族对象 HColumnDescriptor columnDescriptor = new HColumnDescriptor(“more”); // 将新创建的列族添加到指定的数据表 admin.addColumn(tableName, columnDescriptor); System.out.println(“—————新建列族 END—————–“); } /**     * 删除列族     */ @Test public void deleteColumnFamily() throws IOException{ System.out.println(“—————删除列族 START—————–“); // 取得目标数据表的表名对象 TableName tableName = TableName.valueOf(“t_book”); // 删除指定数据表中的指定列族 admin.deleteColumn(tableName, “more”.getBytes()); System.out.println(“—————删除列族 END—————–“); } /**     * 插入数据     */ @Test public void insert() throws IOException{ System.out.println(“—————插入数据 START—————–“); // 取得一个数据表对象 Table table = connection.getTable(TableName.valueOf(“t_book”)); // 需要插入数据库的数据集合 List  putList = new ArrayList (); Put put; // 生成数据集合 for(int i = 0; i 

java连接hbase等待(java连接hbase集群)

如何使用Java API操作Hbase

HBase提供了对HBase进行一系列的管理涉及到对表的管理、数据的操作java api。

常用的API操作有:

1、 对表的创建、删除、显示以及修改等,可以用HBaseAdmin,一旦创建了表,那么可以通过HTable的实例来访问表,每次可以往表里增加数据。

2、 插入数据

创建一个Put对象,在这个Put对象里可以指定要给哪个列增加数据,以及当前的时间戳等值,然后通过调用HTable.put(Put)来提交操作,子猴在这里提请注意的是:在创建Put对象的时候,你必须指定一个行(Row)值,在构造Put对象的时候作为参数传入。

3、 获取数据

要获取数据,使用Get对象,Get对象同Put对象一样有好几个构造函数,通常在构造的时候传入行值,表示取第几行的数据,通过HTable.get(Get)来调用。

4、 浏览每一行

通过Scan可以对表中的行进行浏览,得到每一行的信息,比如列名,时间戳等,Scan相当于一个游标,通过next()来浏览下一个,通过调用HTable.getScanner(Scan)来返回一个ResultScanner对象。HTable.get(Get)和HTable.getScanner(Scan)都是返回一个Result。Result是一个

KeyValue的链表。

5、 删除

使用Delete来删除记录,通过调用HTable.delete(Delete)来执行删除操作。(注:删除这里有些特别,也就是删除并不是马上将数据从表中删除。)

6、 锁

新增、获取、删除在操作过程中会对所操作的行加一个锁,而浏览却不会。

7、 簇的访问

客户端代码通过ZooKeeper来访问找到簇,也就是说ZooKeeper quorum将被使用,那么相关的类(包)应该在客户端的类(classes)目录下,即客户端一定要找到文件hbase-site.xml。

下面是一个例子程序:

import java.io.IOException;

import java.util.ArrayList;

import java.util.List;

import org.apache.hadoop.conf.Configuration;

import org.apache.hadoop.hbase.HBaseConfiguration;

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.Delete;

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.Result;

import org.apache.hadoop.hbase.client.ResultScanner;

import org.apache.hadoop.hbase.client.Scan;

import org.apache.hadoop.hbase.client.Put;

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

public class HBaseTest {

private static Configuration conf = null;

/**

* 初始化配置

*/

static {

Configuration HBASE_CONFIG = new Configuration();

//与hbase/conf/hbase-site.xml中hbase.zookeeper.quorum配置的值相同

HBASE_CONFIG.set(“hbase.zookeeper.quorum”, “10.1.1.1”);

//与hbase/conf/hbase-site.xml中hbase.zookeeper.property.clientPort配置的值相同

HBASE_CONFIG.set(“hbase.zookeeper.property.clientPort”, “2181”);

conf = HBaseConfiguration.create(HBASE_CONFIG);

}

/**

* 创建一张表

*/

public static void creatTable(String tableName, String[] familys) throws Exception {

HBaseAdmin admin = new HBaseAdmin(conf);

if (admin.tableExists(tableName)) {

System.out.println(“table already exists!”);

} else {

HTableDescriptor tableDesc = new HTableDescriptor(tableName);

for(int i=0; ifamilys.length; i++){

tableDesc.addFamily(new HColumnDescriptor(familys[i]));

}

admin.createTable(tableDesc);

System.out.println(“create table ” + tableName + ” ok.”);

}

}

/**

* 删除表

*/

public static void deleteTable(String tableName) throws Exception {

try {

HBaseAdmin admin = new HBaseAdmin(conf);

admin.disableTable(tableName);

admin.deleteTable(tableName);

System.out.println(“delete table ” + tableName + ” ok.”);

} catch (MasterNotRunningException e) {

e.printStackTrace();

} catch (ZooKeeperConnectionException e) {

e.printStackTrace();

}

}

/**

* 插入一行记录

*/

public static void addRecord (String tableName, String rowKey, String family, String qualifier, String value)

throws Exception{

try {

HTable table = new HTable(conf, tableName);

Put put = new Put(Bytes.toBytes(rowKey));

put.add(Bytes.toBytes(family),Bytes.toBytes(qualifier),Bytes.toBytes(value));

table.put(put);

System.out.println(“insert recored ” + rowKey + ” to table ” + tableName +” ok.”);

} catch (IOException e) {

e.printStackTrace();

}

}

/**

* 删除一行记录

*/

public static void delRecord (String tableName, String rowKey) throws IOException{

HTable table = new HTable(conf, tableName);

List list = new ArrayList();

Delete del = new Delete(rowKey.getBytes());

list.add(del);

table.delete(list);

System.out.println(“del recored ” + rowKey + ” ok.”);

}

/**

* 查找一行记录

*/

public static void getOneRecord (String tableName, String rowKey) throws IOException{

HTable table = new HTable(conf, tableName);

Get get = new Get(rowKey.getBytes());

Result rs = table.get(get);

for(KeyValue kv : rs.raw()){

System.out.print(new String(kv.getRow()) + ” ” );

System.out.print(new String(kv.getFamily()) + “:” );

System.out.print(new String(kv.getQualifier()) + ” ” );

System.out.print(kv.getTimestamp() + ” ” );

System.out.println(new String(kv.getValue()));

}

}

/**

* 显示所有数据

*/

public static void getAllRecord (String tableName) {

try{

HTable table = new HTable(conf, tableName);

Scan s = new Scan();

ResultScanner ss = table.getScanner(s);

for(Result r:ss){

for(KeyValue kv : r.raw()){

System.out.print(new String(kv.getRow()) + ” “);

System.out.print(new String(kv.getFamily()) + “:”);

System.out.print(new String(kv.getQualifier()) + ” “);

System.out.print(kv.getTimestamp() + ” “);

System.out.println(new String(kv.getValue()));

}

}

} catch (IOException e){

e.printStackTrace();

}

}

public static void main (String [] agrs) {

try {

String tablename = “scores”;

String[] familys = {“grade”, “course”};

HBaseTest.creatTable(tablename, familys);

//add record zkb

HBaseTest.addRecord(tablename,”zkb”,”grade”,””,”5″);

HBaseTest.addRecord(tablename,”zkb”,”course”,””,”90″);

HBaseTest.addRecord(tablename,”zkb”,”course”,”math”,”97″);

HBaseTest.addRecord(tablename,”zkb”,”course”,”art”,”87″);

//add record baoniu

HBaseTest.addRecord(tablename,”baoniu”,”grade”,””,”4″);

HBaseTest.addRecord(tablename,”baoniu”,”course”,”math”,”89″);

System.out.println(“===========get one record========”);

HBaseTest.getOneRecord(tablename, “zkb”);

System.out.println(“===========show all record========”);

HBaseTest.getAllRecord(tablename);

System.out.println(“===========del one record========”);

HBaseTest.delRecord(tablename, “baoniu”);

HBaseTest.getAllRecord(tablename);

System.out.println(“===========show all record========”);

HBaseTest.getAllRecord(tablename);

} catch (Exception e) {

e.printStackTrace();

}

}

}

求助帖,hbase新手,windows中的java怎么连接linux中的hbase

一、新建本地java工程

file-new-java project

二、添加jar包和配置文件

1、添加JAR包

右击Propertie在弹出的快捷菜单中选择Java Build Path对话框,在该对话框中单击Libraries选项卡,在该选项卡下单击

Add External JARs按钮,定位到$HBASE/lib目录下,并选取如下JAR包。

hadoop-core-1.0.0.jar

commons-loggings-version.jar

commons-cli-version.jar

commons-lang-version.jar

commons-configuration-version.jar

hbase-0.94.1.jar

zookeeper-3.4.3.jar

slf4j-api-1.5.8.jar

slf4j-log4j12-1.5.8.jar

log4j-1.2.16.jar

protobuf-java-2.4.1.jar

2、添加hbase-site.xml配置文件

在工程根目录下创建conf文件夹,将$HBASE_HOME/conf/目录中的hbase-site.xml文件复制到该文件夹中。通过右键

选择Propertie-Java Build Path-Libraries-Add Class Folder。

3、windows下开发HBase应用程序,HBase部署在linux环境中,在运行调试时可能会出现无法找到主机,类似异常信息如下:java.net.UnknownHostException: unknown host: master

解决办法如下:在C:\WINDOWS\system32\drivers\etc\hosts文件中添加如下信息

192.168.2.34 master

关于java连接hbase等待和java连接hbase集群的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

本文来自投稿,不代表【】观点,发布者:【

本文地址: ,如若转载,请注明出处!

举报投诉邮箱:253000106@qq.com

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2024年3月31日 06:46:44
下一篇 2024年3月31日 06:53:57

相关推荐

  • java读取一个字符,java读入一个字符串

    java中如何用Scanner类读入单个字符 1、首先在使用Java编程时,需要先导入java工具包,这样后面才可以使用接受输入和输出的java语句。然后需要创建一个输入类的对象,这里类的名称命名为scan对象。接着定义一个s的字符串变量,接受键盘的任意字符串的输入。 2、初学java,用scanner怎么input单个字母。 有没有chara=scanne…

    2024年5月18日
    2800
  • java程序设计教程,java程序设计教程第二版

    Java语言简单程序设计 java语言程序设计就是使用Java语言(是一种可以撰写跨平台应用软件的面向对象的程序设计语言)编写代码,给出解决特定问题程序的过程。 首先,人物类,person ,Teacher类和CollegeStudent类继承之。 它是目前Internet最流行的编程语言之一,具有高度的安全性、可移植性和代码可重用性。Java程序设计由13…

    2024年5月18日
    4000
  • java类别树,java树的分类

    用java怎么构造一个二叉树呢? 在Java中,你可以定义一个类来表示后序线索二叉树,其中包含有头节点、尾节点和当前节点指针。你可以使用递归或迭代方法遍历整棵树,并创建线索,即存储前驱和后继节点的指针。 建立两个类就应该可以了。一个是树的节点,一个是树,这个是我以前编写的宽度优先遍历的树的构建和遍历,希望对你有帮助。 首先我想问为什么要用LinkedList…

    2024年5月18日
    2700
  • 滑动验证码java,滑动验证码平台

    怎么实现滑动拼图验证码功能? 首先随便找一张图片渲染到canvas上,这里#canvas作为画布,#block作为裁剪出来的小滑块。 重置验证码:在每次验证完成后,重置验证码以允许下一次验证。 打开需要验证的网站,找到滑动拼图验证码的位置。点击拼图,拖动到正确的位置。如果拖动到错误的位置,会有提示,需要重新拖动。如果验证成功,会有提示,可以继续操作。滑动拼图…

    2024年5月18日
    3300
  • javabigdecimal序列化,java序列化实现

    请问,java里,如何把BigDecimal类型转成Integer 1、可以使用强制转换来语句来实现数据类型从Long类型转换成Integer或int类型。 2、自动类型转换 自动类型转换,也称隐式类型转换,是指不需要书写代码,由系统自动完成的类型转换。由于实际开发中这样的类型转换很多,所以Java语言在设计时,没有为该操作设计语法,而是由JVM自动完成。 …

    2024年5月18日
    3400
  • java拆箱装箱,java装箱拆箱作用

    java开发工程师必须要学的技术有哪些 1、java工程师需要学习的内容有很多,比如java语法、java界面编程、JavaScript脚本语言等等。 2、JavaEE基础:Java基础语法、面向对象、核心类库、集合、异常、IO、线程、JDK新特性。JavaWeb开发:前端技术、数据库、JAVA数据库操作、软件服务器及服务器相关技术、动态网页JSP、AJAX…

    2024年5月18日
    3100
  • java导入pdf,java导入数学包

    java生成pdf,图片怎么导不进去? 可以用生成PDF报表的Java组件–iText。具体实现方法如下:导入itext-2。1。5。jar跟itextasian-1。5。2。jar两个包到项目里,建立一个pdf文件。一般情况下,iText使用在有以下一个要求的项目中:1。 出现这个问题的原因就是,提问者用的是字符流,实际不确定文件类型的时候,需…

    2024年5月18日
    3400
  • 四则运算java代码,java四则运算实验报告

    简单的java四则运算问题,请大神们指点下。 interceptOperation:对你输入的算式(加减乘除,例如:1*2+2/2)进行运算。传入的a、b参数目测应该为‘*’,‘/’或者+,-。 首先分析一下四则运算表达式的规律就有思路了:四则运算式子都是 “数字 运算符 数字 运算符……”这种形式,也就是两头肯定是数字,运算符两边总是数字。数字可以有多位,…

    2024年5月18日
    3700
  • java图片二进制存到数据库,图片二进制存入数据库

    在java中如何将图片保存到数据库? 1、一般都是这样的,就是在你服务器有一个专门放置图片的文件夹,然后数据库保存的是你服务器图片的路径。需要用的时候就去数据库里面取路径。得到路径以后你想怎么处理图片是你的事情了。 2、另外一种办法是,将图片通过Base64编码后存储到数据库中,数据库中存储图片的base64编码的二进制可以使用TEXT(mysql)类型。 …

    2024年5月18日
    3300
  • java中文社区,forumjava

    请问有哪些电脑论坛好些? 天涯论坛、新浪论坛、猫扑社区、凤凰论坛、搜狐论坛、网易论坛、凯蒂社区、中国网论坛、王大奇论坛。 1978年,美国芝加哥开发了一套基于8080芯片的BBS芝加哥,这是最早的BBS系统。后来随着Mac的出现,开发了基于Mac的公告板。 Coursera(.coursera.org)- Coursera 是在线教育平台,提供数千个或收费的…

    2024年5月18日
    4200

发表回复

登录后才能评论



关注微信