`

hbase 读写遍历

 
阅读更多
http://blog.csdn.net/feixiangcq/archive/2010/04/16/5495027.aspx

 

1.连接HBase中的表testtable,用户名:root,密码:root

public void ConnectHBaseTable()
 {
  Configuration conf = new Configuration();       
        conf.set("hadoop.job.ugi", "root,root");     
  HBaseConfiguration config = new HBaseConfiguration();
  try
  {
   table = new HTable(config, "testtable");
  }catch(Exception e){e.printStackTrace();}
 }

2.根据行名name获得一行数据,存入Result.注意HBase中的表数据是字节存储的。

   下面的例子表示获得行名为name的行的famA列族col1列的数据。

      String rowId = "name";
      Get get = new Get(rowId);
      Result result = hTable.get(get);
      byte[] value = result.getValue(famA, col1);
      System.out.println(Bytes.toString(value));

3.向表中存数据

      下面的例子表示写入一行。行名为abcd,famA列族col1列的数据为"hello world!"。

      byte[] rowId = Bytes.toBytes("abcd");
      byte[] famA = Bytes.toBytes("famA");
      byte[] col1 = Bytes.toBytes("col1");
      Put put = new Put(rowId).
         add(famA, col1, Bytes.toBytes("hello world!"));
      hTable.put(put);
     

4.扫描的用法(scan):便于获得自己需要的数据,相当于SQL查询。

      byte[] famA = Bytes.toBytes("famA");
      byte[] col1 = Bytes.toBytes("col1");  

      HTable hTable = new HTable("test");  

      //表示要查询的行名是从a开始,到z结束。
      Scan scan = new Scan(Bytes.toBytes("a"), Bytes.toBytes("z"));
     

      //用scan.setStartRow(Bytes.toBytes(""));设置起始行

      //用scan.setStopRow(Bytes.toBytes(""));设置终止行

 

      //表示查询famA族col1列

      scan.addColumn(famA, col1);  

      //注意,下面是filter的写法。相当于SQL的where子句

      //表示famA族col1列的数据等于"hello world!"
     
SingleColumnValueFilter singleColumnValueFilterA = new SingleColumnValueFilter(
           famA, col1, CompareOp.EQUAL, Bytes.toBytes("hello world!"));
      singleColumnValueFilterA.setFilterIfMissing(true);  

      //表示famA族col1列的数据等于"hello hbase!"
     
SingleColumnValueFilter singleColumnValueFilterB = new SingleColumnValueFilter(
           famA, col1, CompareOp.EQUAL, Bytes.toBytes("hello hbase!"));
      singleColumnValueFilterB.setFilterIfMissing(true);  
      

      //表示famA族col1列的数据是两者中的一个
      FilterList filter = new FilterList(Operator.MUST_PASS_ONE, Arrays
           .asList((Filter) singleColumnValueFilterA,
                singleColumnValueFilterB));  

      scan.setFilter(filter);  

      ResultScanner scanner = hTable.getScanner(scan);  
      //遍历每个数据
      for (Result result : scanner) {
         System.out.println(Bytes.toString(result.getValue(famA, col1)));
      }

5.上面的代码容易出错的地方在于,需要导入HBase的类所在的包。导入时需要选择包,由于类可能出现在HBase的各个子包中,所以要选择好,下面列出常用的包。尽量用HBase的包

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.client.Get;
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.filter.Filter;
import org.apache.hadoop.hbase.filter.FilterList;
import org.apache.hadoop.hbase.filter.SingleColumnValueFilter;
import org.apache.hadoop.hbase.filter.CompareFilter.CompareOp;
import org.apache.hadoop.hbase.filter.FilterList.Operator;
import org.apache.hadoop.hbase.util.Bytes;

import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Arrays;
import java.util.Date;

 

6.下面列出HBase常用的操作

(1)时间戳到时间的转换.单一的时间戳无法给出直观的解释。

public String GetTimeByStamp(String timestamp)
 {

  long datatime= Long.parseLong(timestamp);
     Date date=new Date(datatime);  
     SimpleDateFormat   format=new   SimpleDateFormat("yyyy-MM-dd HH:MM:ss");  
     String timeresult=format.format(date);
     System.out.println("Time : "+timeresult);
     return timeresult;
 }

(2)时间到时间戳的转换。注意时间是字符串格式。字符串与时间的相互转换,此不赘述

public String GetStampByTime(String time)
 {
  String Stamp="";
  SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  Date date;
  try
  {
   date=sdf.parse(time);
   Stamp=date.getTime()+"000";
   System.out.println(Stamp);
  }catch(Exception e){e.printStackTrace();}
  return Stamp;

 }

分享到:
评论

相关推荐

    Java通过api 操作hbase 0.98

    在集群中创建java项目调用api来操作hbase,主要涉及对hbase的创建表格,删除表格,插入数据,删除数据,查询一条数据,查询所有数据等操作。 具体流程如下: 1.创建项目 2.获取jar包到项目的lib目录下(这边试用的事...

    Hbase操作示例 Hbase的读写例子

    本人原创, 1.Hbase连接需要改Hbase包中的两个配置文件,加上Hbase所在机器ip及端口 2.HBaseDMLT初始化环境 3.MapDataIni为建表 4.MapDataInsert为写数据 5.MapDataDelete为删除数据 6.MapDataRead为读数据

    HBASE学习分享

    HBASE的主要原理解读:包括HBase 读写逻辑、HBase region拆分和合并

    hbase-sdk是基于hbase-client和hbase-thrift的原生API封装的一款轻量级的HBase ORM框架

    对HBase的API做了一层抽象,统一了HBase1.x和HBase2.x的实现,并提供了读写HBase的ORM的支持,同时,sdk还对HBase thrift 的客户端API进行了池化封装,(类似JedisPool),消除了直接使用原生API的各种问题,使之...

    大数据查询——HBase读写设计与实践

    本文来自于InfoQ,这个项目主要解决check和opinion2张历史数据表(历史数据是指当业务发生过程中的完整中间流程和结果数据)的在线查询。本项目主要解决check和opinion2张历史数据表(历史数据是指当业务发生过程中...

    YCSB之HBase压力测试.pdf

    本文讲解如何安装和配置YCSB,如何使用YCSB给Hbase加载测试数据,如何使用YCSB命令测试Hbase读写性能。主要解释了各个命令行参数的作用。

    gohbase:Pure-Go HBase客户端

    Golang HBase客户端 这是的纯客户端。 当前状态:测试版。支持的版本HBase的> = 1.0安装go get github.com/tsuna/gohbase用法示例创建一个客户client := gohbase . NewClient ( "localhost" )插入一个单元格// ...

    HbaseTemplate 操作hbase

    java 利用 sping-data-hadoop HbaseTemplate 操作hbase find get execute 等方法 可以直接运行

    读写HBase数据.pdf

    Spark及pyspark的操作应用 读写HBase数据

    pinpoint的hbase初始化脚本hbase-create.hbase

    搭建pinpoint需要的hbase初始化脚本hbase-create.hbase

    hbase 完全使用手册

    hbase完全参考手册,不过是英文版。非常全面hbase英文参考手册

    HBase(hbase-2.4.9-bin.tar.gz)

    HBase(hbase-2.4.9-bin.tar.gz)是一个分布式的、面向列的开源数据库,该技术来源于 Fay Chang 所撰写的Google论文“Bigtable:一个结构化数据的分布式存储系统”。就像Bigtable利用了Google文件系统(File System...

    HBase数据库设计.doc

    1. HBase有哪些基本的特征? 1 HBase特征: 1 2. HBase相对于关系数据库能解决的问题是什么? 2 HBase与关系数据的区别? 2 HBase与RDBMS的区别? 2 3. HBase的数据模式是怎么样的?即有哪些元素?如何存储?等 3 1...

    Hbase权威指南(HBase: The Definitive Guide)

    作为google bigtable架构的开源实现,hbase能够支持数以十亿计的记录数和数以百万计的字段,与此同时它还能够保证常量级的读写性能。很多it管理层正在质疑hbase。而这本书提供了很多有意义的答案,无论你是否正在...

    hbase分页查询实现.pdf

    HBase分页查询实现 HBase作为一个NoSQL数据库,具有高性能、高可扩展性和高可靠性等特点,但是在查询方面却存在一些限制,例如不支持分页查询。这就使得开发者需要自己实现分页查询功能。本文将讲解如何使用Java...

    hbase-1.4.9-bin.tar.gz

    hbase官方推荐稳定版1.4.9 HBase是建立在Hadoop文件系统之上的分布式面向列的数据库。它是一个开源项目,是横向扩展的。 HBase是一个数据模型,类似于谷歌的大表... HBase在Hadoop的文件系统之上,并提供了读写访问。

    hbase-2.3.5单机一键部署工具

    注意:zookeeper3.4.13和hbase2.3.5都是采用docker-compose方式部署 原文链接:https://blog.csdn.net/m0_37814112/article/details/120915194 说明:使用外部zookeeper3.4.13之hbase2.3.5一键部署工具,支持部署、...

    java大数据作业_3HBase

    1. 请用java集合的代码描述HBase的表结构 2. 请简述HBase中数据写入最后导致Region分裂的全过程 3. 如果设计一个笔记的表,表中要求有笔记的属性和笔记的内容,怎么做 4. HBase部署时如何指定多个zookeeper 5. HBase...

    Hbase资源整理集合

    HBase 官方文档.pdf HBase的操作和编程.pdf HBase Cpressr优化与实验 郭磊涛.pdf null【HBase】Data Migratin frm Gri t Clu Cmputing - Natural Sienes .pdf 分布式数据库HBase快照的设计与实现.pdf 【HBase】...

Global site tag (gtag.js) - Google Analytics