大数据笔记(十四)——HBase的过滤器与Mapreduce

一. HBase过滤器

package demo;

import javax.swing.RowFilter;

import org.apache.hadoop.conf.Configuration;
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.filter.ColumnPrefixFilter;
import org.apache.hadoop.hbase.filter.CompareFilter.CompareOp;
import org.apache.hadoop.hbase.filter.FilterList;
import org.apache.hadoop.hbase.filter.FilterList.Operator;
import org.apache.hadoop.hbase.filter.MultipleColumnPrefixFilter;
import org.apache.hadoop.hbase.filter.RegexStringComparator;
import org.apache.hadoop.hbase.filter.SingleColumnValueFilter;
import org.apache.hadoop.hbase.util.Bytes;
import org.junit.Test;

import net.spy.memcached.ops.OperationErrorType;

public class TestHBaseFilter {

    /**
     * 列值过滤器:SingleColumnValueFilter
     */
    @Test
    public void testSingleColumnValueFilter() throws Exception{
        //查询工资等于3000的员工
        //select * from emp where sal=3000
        //配置ZK的地址信息
        Configuration conf = new Configuration();
        conf.set("hbase.zookeeper.quorum", "192.168.153.11");

        //得到HTable客户端
        HTable client  = new HTable(conf, "emp");
        //定义一个列值过滤器
        SingleColumnValueFilter filter = new SingleColumnValueFilter(Bytes.toBytes("empinfo"),//列族
                Bytes.toBytes("sal"), //工资
                CompareOp.EQUAL,       // =
                Bytes.toBytes("3000"));//?

        //定义一个扫描器
        Scan scan = new Scan();
        scan.setFilter(filter);

        //通过过滤器查询数据
        ResultScanner rs = client.getScanner(scan);
        for (Result result : rs) {
            String name = Bytes.toString(result.getValue(Bytes.toBytes("empinfo"), Bytes.toBytes("ename")));
            System.out.println(name);
        }

        client.close();
    }

    /**
     * 列名前缀过滤器:ColumnPrefixFilter
     */
    @Test
    public void testColumnPrefixFilter() throws Exception{
        //列名前缀过滤器
        //select ename from emp
        //配置ZK的地址信息
        Configuration conf = new Configuration();
        conf.set("hbase.zookeeper.quorum", "192.168.153.11");

        //得到HTable客户端
        HTable client  = new HTable(conf, "emp");

        //定义一个列名前缀过滤器
        ColumnPrefixFilter filter = new ColumnPrefixFilter(Bytes.toBytes("ename"));

        //定义一个扫描器
        Scan scan = new Scan();
        scan.setFilter(filter);

        //通过过滤器查询数据
        ResultScanner rs = client.getScanner(scan);
        for (Result result : rs) {
            String name = Bytes.toString(result.getValue(Bytes.toBytes("empinfo"), Bytes.toBytes("ename")));
            System.out.println(name);
        }

        client.close();
    }

    /**
     * 多个列名前缀过滤器:MultipleColumnPrefixFilter
     */
    @Test
    public void testMultipleColumnPrefixFilter() throws Exception{

        Configuration conf = new Configuration();
        conf.set("hbase.zookeeper.quorum", "192.168.153.11");

        HTable client  = new HTable(conf, "emp");
        //员工姓名 薪资
        byte[][] names = {Bytes.toBytes("ename"),Bytes.toBytes("sal")};

        MultipleColumnPrefixFilter filter = new MultipleColumnPrefixFilter(names);

        Scan scan = new Scan();
        scan.setFilter(filter);

        ResultScanner rs = client.getScanner(scan);
        for (Result result : rs) {
            String name = Bytes.toString(result.getValue(Bytes.toBytes("empinfo"), Bytes.toBytes("ename")));
            String sal = Bytes.toString(result.getValue(Bytes.toBytes("empinfo"), Bytes.toBytes("sal")));
            System.out.println(name+"\t"+sal);
        }

        client.close();
    }

    /**
     * 行键过滤器:RowFilter
     */
    @Test
    public void testRowFilter() throws Exception{

        Configuration conf = new Configuration();
        conf.set("hbase.zookeeper.quorum", "192.168.153.11");

        HTable client  = new HTable(conf, "emp");

        //定义一个行键过滤器
        org.apache.hadoop.hbase.filter.RowFilter filter = new org.apache.hadoop.hbase.filter.RowFilter(
                CompareOp.EQUAL, //=
                new RegexStringComparator("7839"));

        //定义一个扫描器
        Scan scan = new Scan();
        scan.setFilter(filter);

        //通过过滤器查询数据
        ResultScanner rs = client.getScanner(scan);
        for (Result result : rs) {
            String name = Bytes.toString(result.getValue(Bytes.toBytes("empinfo"), Bytes.toBytes("ename")));
            String sal = Bytes.toString(result.getValue(Bytes.toBytes("empinfo"), Bytes.toBytes("sal")));
            System.out.println(name+"\t"+sal);
        }

        client.close();
    }

    /**
     * 组合过滤器
     */
    @Test
    public void testFilter() throws Exception{

        Configuration conf = new Configuration();
        conf.set("hbase.zookeeper.quorum", "192.168.153.11");

        HTable client  = new HTable(conf, "emp");

        //工资=3000
        SingleColumnValueFilter filter1 = new SingleColumnValueFilter(Bytes.toBytes("empinfo"),
                Bytes.toBytes("sal"), CompareOp.EQUAL, Bytes.toBytes("3000"));
        //名字
        ColumnPrefixFilter filter2 = new ColumnPrefixFilter(Bytes.toBytes("ename"));

        FilterList filterList = new FilterList(Operator.MUST_PASS_ALL);
        filterList.addFilter(filter1);
        filterList.addFilter(filter2);

        Scan scan = new Scan();
        scan.setFilter(filterList);

        ResultScanner rs = client.getScanner(scan);
        for (Result result : rs) {
            String name = Bytes.toString(result.getValue(Bytes.toBytes("empinfo"), Bytes.toBytes("ename")));
            String sal = Bytes.toString(result.getValue(Bytes.toBytes("empinfo"), Bytes.toBytes("sal")));
            System.out.println(name+"\t"+sal);
        }

        client.close();
    }
}

二. HDFS上的mapreduce

建立表

create ‘word‘,‘content‘

put ‘word‘,‘1‘,‘content:info‘,‘I love Beijing‘

put ‘word‘,‘2‘,‘content:info‘,‘I love China‘

put ‘word‘,‘3‘,‘content:info‘,‘Beijing is the capital of China‘

原文地址:https://www.cnblogs.com/lingluo2017/p/8650512.html

时间: 2024-08-01 21:52:44

大数据笔记(十四)——HBase的过滤器与Mapreduce的相关文章

蔡先生论道大数据之十四:案例分析(2) 国足也可以进世界杯

巴西世界杯,德国队夺冠,首推主教练勒夫功不可没,还有场上所有队员的精彩表现,相信大家都没二话,我今天就说一说德国队背后的另一个功臣"Match In-sights". 哈,"Match In-sights"可不是一个人的名称,是SAP为德国队量身定制的一款基于大数据的足球解决方案的电脑系统,堪称德国队的第12人.这一套系统可以迅速收集,处理分析球员和球队的技术数据,使用"数据和事实"来优化球队配置,从而提升球队作战能力,并通过分析对手技术数据,找

大数据时代数据库-云HBase架构&生态&实践

摘要: 2018第九届中国数据库技术大会,阿里云高级技术专家.架构师封神(曹龙)带来题为大数据时代数据库-云HBase架构&生态&实践的演讲.主要内容有三个方面:首先介绍了业务挑战带来的架构演进,其次分析了ApsaraDB HBase及生态,最后分享了大数据数据库的实际案例. 2018第九届中国数据库技术大会,阿里云高级技术专家.架构师封神(曹龙)带来题为大数据时代数据库-云HBase架构&生态&实践的演讲.主要内容有三个方面:首先介绍了业务挑战带来的架构演进,其次分析了A

论大数据的十大局限

“忽如一夜春风来,千树万树梨花开”,似乎在一夜之间,大数据就红遍了南北半球,,大数据被神化得无处不在,无所不包,无所不能.这里面有认识上的原因,也有故意忽悠的成份.笔者以为,越是在热得发烫的时候,越是需要有人在旁边吹吹冷风.在这里谈大数据的十大局限性,并非要否定其价值.相反,只有我们充分认识了大数据的特点和优劣势,才能更加有效地对其进行采集.加工.应用,充分挖掘和发挥其价值.         1.数据噪声:与生俱来的不和谐 大数据之所以为大数据,首先是因为其数据体量巨大.然而,在这海量的数据中,

swift 笔记 (十四) —— 构造过程

构造过程 为了生成类.结构体.枚举等的实例,而做的准备过程,叫做构造过程. 为了这个过程,我们通常会定义一个方法来完成,这个方法叫做构造器.当然它的逆过程,叫做析构器,用于在实例被释放前做一些清理工作以及一此自定义化的处理. 为存储型属性设置初始值 类和结构体在生成实例那一刻,必须为所有的属性赋以特定的初始值. 要么在定义存储型属性的时候直接给个初始值,否则就必须在构造器里面指定一个初始值. 上面说的这两种情况,都不会触发存储型属性的监听者行为(property observer). struc

大数据营销十大切入点

许多人感觉到大数据时代正在到来,但往往只是一种朦胧的感觉,对于其真正对营销带来的威力可以用一个时髦的词来形容——不明觉厉.实际上,还是应尽量弄明白,才会明白其厉害之处.对于多数企业而言,大数据营销的主要价值源于以下几个方面. 第一,用户行为与特征分析.显然,只要积累足够的用户数据,就能分析出用户的喜好与购买习惯,甚至做到“比用户更了解用户自己”.有了这一点, 才是许多大数据营销的前提与出发点.无论如何,那些过去将“一切以客户为中心”作为口号的企业可以想想,过去你们真的能及时全面地了解客户的需求与

蔡先生论道大数据之(十五) :什么是数据化运营?

数据化运营讨论(1) 近现代营销理论代表思想是4P理论,4P是指产品.价格.渠道.促销,它的核心是产品,其他要素都是围绕产品这个核心来的,进入21世纪人们又提出了4C的营销理论,包括消费者.成本.方便性.沟通交流,它的核心是用户是消费者,一切以消费者为核心,这也是目前大多数企业市场营销战略核心思想. 社会在进步,4C理论之后来到了大数据时代,所面对的行业状况是,白热化的市场竞争,越来越严苛的营销预算.堆积如山的海量数据,迫使企业寻找更加适合的营销思路和方法.目前行业主流的理论是3P3C,包括概率

蔡先生论道大数据之(十六) :穷则思变

数据化运营讨论(2) 数据化运营的理念与技术对企业来说是革命性的,它能将现在"卖方市场"商业状态变成为"买方市场". "穷则思变"古话说的好,在当下传统营销方式手段很难明显提升业绩和市场竞争力时"数据化运营"的理念和技术就成为企业未来打破竞争,提升自我强有力地商业武器. 企业通过对数据的分析和挖掘,运营不在盲目,真正做到心中有数,有的放矢.举例,传统的营销活动带来的问题:"我知道投入的广告费有一半打了水漂,收效甚微,

蔡先生论道大数据之十: 企业如何入手大数据战略(1)

今天之后的几章我们重点讨论企业如果要利用大数据应该从那几个方面入手,我粗粗的总结了一下大致分三个方面,这三个方面做到为了,恭喜你你的企业正开始享受和拥有大数据来的红利和价值. 具体入手之前,我们先要明确一点就是首先企业管理层需要有清晰思路然后从上到下认真贯彻,管理层还要对预期的业务影响要有个清晰的认识,能够给出从数据收集.模型建立到企业文化转型的一揽子方法,避免掉进"数据可以为企业做那些"这样的思维陷阱中去. 企业定制大数据战略,需要注意三个关键点,说白了也就根据前面文章总结出来的精髓

自学it18大数据笔记-第一阶段Java-day16-day17-day18-day19--day20-day21-day22——会持续更新

转行大数据领域,没报班,自学试试,能坚持下来就以后好好做这行,不能就--!准备从现有这套it18的视屏残本开始--自学是痛苦的,发博客,算是监督自己,督促自己坚持学下去. (教学视屏是it18做活动送的,虽不全,但徐培成老师讲的真心不错,特此感谢it18掌--帮你们打打广告) 笔记为自学时记录,如有错误,欢迎指正,不胜感激! 笔记分享:自学it18大数据笔记-第一阶段Java-day16-day17-day18-day19--day20-day21-day22--会持续更新-- 第一阶段Java

自学it18大数据笔记-第三阶段Spark-day14;Spark-day15(开始试水找工作了)——会持续更新……

写在最前:转行大数据领域,没报班,自学试试,能坚持下来以后就好好做这行,不能就--!准备从现有这套it18掌的视屏残本开始--自学是痛苦的,发博客和大家分享下学习成果--也是监督自己,督促自己坚持学下去. (教学视屏是it18掌做活动送的,视屏不是很全,课堂笔记和源码等课堂相关资料也未放出,但徐培成老师课讲的真心很好,感兴趣的不妨听听,特此感谢it18掌--帮他们打打广告) 笔记为自学时记录,如有错误,欢迎指正,不胜感激!现已广州转移至上海,开始试水找工作了,欢迎小伙伴们加qq或微博沟通交流(Q