因为数据清洗部分需要用到Mapreduce,所以先解决hbase的问题,可以用命令先在hbase存一下简单的数据进行查询,之后只要替换数据就可以实现了原本功能

在看该部分前,确保Hase API看了,懂了一点

题目

  1. 使用HBASE的API实现条件查询功能,具体内容如下:

(1)根据开始时间和结束时间搜索这段时间内的访问记录。输入信息为开始时间和结束时间,用‘|’字符隔开)

(2)根据用户ID搜索该用户的访问记录。输入信息为一个或多个用户ID,用‘|’字符隔开(并)

(3)根据关键字搜索含有该关键字的用户查询词记录。输入信息为一个或多个关键字,用‘|’字符隔开 (交)

(4)根据关键字(如baidu)等搜索相关网站的URL访问记录,输入信息为一个或多个关键字,用‘|’字符隔开(交)

(5)实现以上四个条件任意组合的联合搜索。四个条件之间用’+’字符隔开 (联合搜索要求所有条件同时满足)

分析

仔细分析一下这五个题目很像,就是用到了过滤器的知识,代码很类似。

CompareFilter.CompareOp.
LESS <
LESS_OR_EQUAL <=
EQUAL =
NOT_EQUAL <>
GREATER_OR_EQUAL >=
GREATER >

以(4)为例子

public static void selectURLs(String[] urls) throws IOException {
//过滤连 MUST_PASS_ALL(and) MUST_PASS_ONE(or)
FilterList filterList = new FilterList(FilterList.Operator.MUST_PASS_ALL);
//创建单列值过滤器
for(String url:urls){
SingleColumnValueFilter singleColumnValueFilter =
new SingleColumnValueFilter(Bytes.toBytes("hc"),Bytes.toBytes("URL"),
CompareFilter.CompareOp.EQUAL,new SubstringComparator(url));
//添加到过滤器
filterList.addFilter(singleColumnValueFilter);
}
Table table = HbaseUtils.getTable(Constants.TABLENAME);
HbaseUtils.showFilter(table,filterList);
HbaseUtils.close(table);
}

分析一下(5),比较坑的一点就是你可能会想到用split来切割

如果输入条件+1++,最后得到的结果只有1,所以需要循坏字符串来切割

String[] parts={"","","",""};
int cnt = 0;
for(int i=0;i<line.length();i++){
if(line.charAt(i)!='+'){
parts[cnt]+=line.charAt(i);
}else{
cnt++;
}
}

第四部分 数据搜索之使用HBASE的API实现条件查询的更多相关文章

  1. 第六部分 数据搜索之使用HBASE的API实现条件查询

    题目 使用HADOOP的MAPReduce,实现以下功能: (1)基于大数据计算技术的条件查询:使用mapreduce框架,实现类似Hbase六个字段查询的功能 (2)时段流量统计:以hh:mm:ss ...

  2. hbase shell插入根据条件查询数据

    hbase shell插入根据条件查询数据 创建并插入数据: hbase(main):179:0> create 'scores','grade','course' hbase(main):18 ...

  3. 大数据学习系列之三 ----- HBase Java Api 图文详解

    版权声明: 作者:虚无境 博客园出处:http://www.cnblogs.com/xuwujing CSDN出处:http://blog.csdn.net/qazwsxpcm 个人博客出处:http ...

  4. Hbase API 多条件查询

    public static ResultScanner scan(String tableName, String family, List<String> columns, List&l ...

  5. B-树和B+树的应用:数据搜索和数据库索引

    B-树和B+树的应用:数据搜索和数据库索引  B-树 1 .B-树定义 B-树是一种平衡的多路查找树,它在文件系统中很有用. 定义:一棵m 阶的B-树,或者为空树,或为满足下列特性的m 叉树:⑴树中每 ...

  6. 大数据【七】HBase部署

    接着前面的Zookeeper部署之后,现在可以学习HBase了. HBase是基于Hadoop的开源分布式数据库,它以Google的BigTable为原型,设计并实现了具有高可靠性.高性能.列存储.可 ...

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

    业务的挑战 存储量量/并发计算增大 现如今大量的中小型公司并没有大规模的数据,如果一家公司的数据量超过100T,且能通过数据产生新的价值,基本可以说是大数据公司了 .起初,一个创业公司的基本思路就是首 ...

  8. jQuery dataTables四种数据来源[转]

    2019独角兽企业重金招聘Python工程师标准>>> 四种数据来源 对于 dataTables 来说,支持四种表格数据来源. 最为基本的就是来源于网页,网页被浏览器解析为 DOM ...

  9. CRL快速开发框架系列教程四(删除数据)

    本系列目录 CRL快速开发框架系列教程一(Code First数据表不需再关心) CRL快速开发框架系列教程二(基于Lambda表达式查询) CRL快速开发框架系列教程三(更新数据) CRL快速开发框 ...

随机推荐

  1. window 10 下 --excel | power query 通过 ODBC链接 mysql 数据库

    excel链接到mysql的方法有几种,今天主要介绍如何通过ODBC链接 odbc是 "开放数据库连接",你可以通过下载插件使得自己的excel可以连接到不同的数据库. 关于版本的 ...

  2. Django分页器组建

    class Pagination(object): def __init__(self,current_page,all_count,per_page_num=2,pager_count=11): & ...

  3. java实现简易的图书馆管理系统

    比较适合新手练手的一个简易项目 直接上源码 Book package code; /** * @author ztr * @version 创建时间:2021年3月4日 下午8:21:40 * 类说明 ...

  4. Java系列教程-SpringMVC教程

    SpringMVC教程 1.SpringMVC概述 1.回顾MVC 1.什么是MVC MVC是模型(Model).视图(View).控制器(Controller)的简写,是一种软件设计规范. 是将业务 ...

  5. Asp.Net Core 学习随笔

    1.依赖注入 configureServices 中 //单例 services.AddSingleton<i,c>(); //http请求内 services.AddScopend< ...

  6. 最短路径(Dijskra算法)

    声明:图片及内容基于:https://www.bilibili.com/video/BV16C4y1H7Zc?from=articleDetail 最短路径 Dijkstra算法 原理 数据结构 核心 ...

  7. [图论]剑鱼行动:prim

    剑鱼行动 目录 剑鱼行动 Description Input Output Sample Input Sample Output 解析 难点 代码 Description 给出N个点的坐标,对它们建立 ...

  8. python基础(三):元组

    什么是元组 有时候你需要创建一系列不可修改的元素,元组可以满足这种需求.Python将不能修改的值称为不可变的,而不可变的列表被称为元组. 元组的定义和访问 元组使用圆括号来定义,我们已经知道:元组也 ...

  9. Dynamics CRM各个版本的元数据浏览解决方案

    https://docs.microsoft.com/en-us/dynamics365/customerengagement/on-premises/developer/browse-your-me ...

  10. Spring(一)简介和配置

    知识补充: 那么什么是xmlns呢?xmlns其实是XML Namespace的缩写,可译为"XML命名空间",但个人觉得,翻译后的名字反而不好理解,所以我们就叫它为XML Nam ...