• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
导航菜单
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • windows
  • 服务器硬件
  • 服务器运维
  • 云计算
  • 虚拟化
  • IIS教程
  • Linux
  • Apache
  • Ftp
  • DNS
  • Nginx
您的位置:首页 > 服务器 >云计算 > HBase扫描器与过滤器,HBase扫描器过滤器

HBase扫描器与过滤器,HBase扫描器过滤器

作者:网友 字体:[增加 减小] 来源:互联网

本文主要包含hbase过滤器,hbase rowkey 过滤,hbase 协处理器,hbase 计数器,hdfs和hbase存储等服务器相关知识,网友希望可以进行参考

HBase扫描器与过滤器,HBase扫描器过滤器


扫描器

HBase在扫描数据的时候,使用scanner表扫描器。
HTable通过一个Scan实例,调用getScanner(scan)来获取扫描器。可以配置扫描起止位以及其他的过滤条件。
通过迭代器返回查询结果,使用起来虽然不是很方便,不过并不复杂。

但是这里有一点可能被忽略的地方,就是返回的scanner迭代器,每次调用next的获取下一条记录的时候,默认配置下会访问一次RegionServer。这在网络不是很好的情况下,对性能的影响是很大的,建议配置扫描器缓存。

扫描器缓存

hbase.client.scanner.caching配置项可以设置HBase scanner一次从服务端抓取的数据条数,默认情况下一次一条。通过将其设置成一个合理的值,可以减少scan过程中next()的时间开销,代价是scanner需要通过客户端的内存来维持这些被cache的行记录。
有三个地方可以对其进行配置:
1、在HBase的conf配置文件中进行配置。
2、通过调用HTable.setScannerCaching(int scannerCaching)进行配置。
3、通过调用Scan.setCaching(int caching)进行配置。
三者的优先级越来越高。

扫描器Demo

package Scanner;

import java.io.IOException;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.KeyValue;
import org.apache.hadoop.hbase.client.HConnection;
import org.apache.hadoop.hbase.client.HConnectionManager;
import org.apache.hadoop.hbase.client.HTableInterface;
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 Scanner {

    private String rootDir;
    private String zkServer;
    private String port;
    private Configuration conf; 
    private HConnection hConn = null;

    private Scanner(String rootDir,String zkServer,String port) throws IOException{
        this.rootDir = rootDir;
        this.zkServer = zkServer;
        this.port = port;

        conf = HBaseConfiguration.create();
        conf.set("hbase.rootdir", rootDir);
        conf.set("hbase.zookeeper.quorum", zkServer);
        conf.set("hbase.zookeeper.property.clientPort", port);

        hConn = HConnectionManager.createConnection(conf);  
    }

    public void scanTable(String tablename){
        Scan scan = new Scan();
        //设置扫描缓存
        scan.setCaching(1000);
        try {
            HTableInterface table = hConn.getTable(tablename);

            ResultScanner scanner = table.getScanner(scan);
            for (Result result : scanner) {
                format(result);
            }

        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public void format(Result result){
        //行键
        String rowkey = Bytes.toString(result.getRow());

        //Return an cells of a Result as an array of KeyValues
        KeyValue[] kvs = result.raw();

        for (KeyValue kv : kvs) {
            //列族名
            String family = Bytes.toString(kv.getFamily());
            //列名
            String qualifier = Bytes.toString(kv.getQualifier());

            String value = Bytes.toString(result.getValue(Bytes.toBytes(family), Bytes.toBytes(qualifier)));

            System.out.println("rowkey->"+rowkey+", family->"
            +family+", qualifier->"+qualifier);
            System.out.println("value->"+value);

        }
    }

    //命令行 scan 'students'
    public static void main(String[] args) throws IOException {
        String rootDir = "hdfs://hadoop1:8020/hbase";
        String zkServer = "hadoop1";
        String port = "2181";
        //初始化
        Scanner conn = new Scanner(rootDir,zkServer,port);

        conn.scanTable("students");
    }
}

过滤器

1、使用过滤器可以提高操作表的效率, HBase中两种数据读取函数get()和scan()都支持过滤器,支持直接访问和通过指定起止行键来访问,但是缺少细粒度的筛选功能(如基于正则表达式对行键或值进行筛选的功能)。
2、可以使用预定义好的过滤器或者是实现自定义过滤器。
3、 过滤器在客户端创建,通过RPC传送到服务器端,在服务器端执行过滤操作,把数据返回给客户端。

过滤器分类

1、Comparision Filters(比较过滤器)

RowFilter
FamilyFilter
QualifierFilter
ValueFilter
DependentColumnFilter

2、Dedicated Filters(专用过滤器)

SingleColumnValueFilter
SingleColumnValueExcludeFilter
PrefixFilter
PageFilter
KeyOnlyFilter
FirstKeyOnlyFilter
TimestampsFilter
RandomRowFilter

3、 Decorating Filters(附加过滤器)

SkipFilter
WhileMatchFilters

过滤器Demo

package Filter;

import java.io.IOException;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.KeyValue


 
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • HBase扫描器与过滤器,HBase扫描器过滤器

相关文章

  • 如何创造自己的数据字典(词库转换工具的使用),创造自己工具的使用
  • Windows上用VAGRANT创建运行管理VirtualBox虚拟机,vagrantvirtualbox
  • hadoop-common源码分析之-WritableUtils,hadoopcommon源码
  • MapReduce之RecordReader组件源码解析及实例,mapreduce实例
  • Spark DataFrame小试牛刀,sparkdataframe小试
  • CloudStack VM运行状态的监控-Management,cloudstack系统vm
  • AWS EC2 调整云主机根卷大小,awsec2
  • A Note on Distributed Computing,anoteondialectic
  • hive-内部表与外部表的区别,hive-区别
  • RedHadoop创始人童小军在北京开讲“Hadoop2.0集群优化与管理”啦!,redhadoophadoop2.0

文章分类

  • windows
  • 服务器硬件
  • 服务器运维
  • 云计算
  • 虚拟化
  • IIS教程
  • Linux
  • Apache
  • Ftp
  • DNS
  • Nginx

最近更新的内容

    • Hive作为Mondrian的数据源,hivemondrian
    • [Sqoop]将Hive数据表导出到Mysql,sqoophive
    • hive SymlinkTextInputFormat介绍及用法,textinputformat
    • Libvirt中windows虚拟机的动态内存管理,libvirt虚拟机
    • 推荐引擎mahout安装与配置,引擎mahout配置
    • LinkedIn Cubert 实践指南,linkedincubert
    • hbase-1.0.1的60010页面无法打开,hbase-1.0.160010
    • CDH5 hadoop-hive-habse单机版配置,hadoophivehbase
    • Cloud Foundry buildpack开发部署实例解析,foundrybuildpack
    • kernel syn,syn

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有