javahbase,javahbase查询

本文目录一览:

如何在java中实现hbase接口

使用maven+idea进行管理

maven

dependency groupIdlog4j/groupId artifactIdlog4j/artifactId version1.2.17/version /dependency

dependency groupIdorg.apache.hbase/groupId artifactIdhbase-shaded-client/artifactId version1.2.3/version /dependency

java怎样给hbase插入数据

hbase 是动态列的,直接加就可以了,不用事先定义的啊

例如:(代码没有调试过,具体可看hbase的例子)

Table table = connection.getTable(TableName.valueOf(表名));

Put put = new Put(Bytes.toBytes(主键字符串));

put.addColumn(FieldFamily, Bytes.toBytes(字段名1), Bytes.toBytes(插入的值1));

put.addColumn(FieldFamily, Bytes.toBytes(字段名2), Bytes.toBytes(插入的值2));

………

table.put(put);

北大青鸟java培训:Hbase知识点总结?

hbase概念:  非结构化的分布式的面向列存储非关系型的开源的数据库,根据谷歌的三大论文之一的bigtable  高宽厚表  作用:  为了解决大规模数据集合多重数据种类带来的挑战,尤其是大数据应用难题。

  能干什么:  存储大量结果集数据,低延迟的随机查询。

  sql:  结构化查询语言  nosql:  非关系型数据库,列存储和文档存储(查询低延迟),hbase是nosql的一个种类,其特点是列式存储。

  非关系型数据库–列存储(hbase)  非关系型数据库–文档存储(MongoDB)  非关系型数据库–内存式存储(redis)  非关系型数据库–图形模型(graph)  hive和hbase区别?  Hive的定位是数据仓库,虽然也有增删改查,但其删改查对应的是整张表而不是单行数据,查询的延迟较高。

其本质是更加方便的使用mr的威力来进行离线分析的一个数据分析工具。

  HBase的定位是hadoop的数据库,电脑培训发现是一个典型的Nosql,所以HBase是用来在大量数据中进行低延迟的随机查询的。

  hbase运行方式:  standalonedistrubited  单节点和伪分布式?  单节点:单独的进程运行在同一台机器上  hbase应用场景:  存储海量数据低延迟查询数据  hbase表由多行组成  hbase行一行在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();

}

}

}

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/187964.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2024-11-28 06:25
下一篇 2024-11-28 06:26

发表回复

登录后才能评论