【大数据存储与处理】实验二 HBase 过滤器操作

实验二 HBase 过滤器操作 

【实验目的】: 

1.掌握使用 HBase 过滤器进行全表扫描。 

【实验内容与要求】: 

在 HBase 中,Get 和 Scan 操作都可以使用过滤器来设置输出的范围,类似于 SQL 里面 

的 Where 查询条件。使用 show_filter 命令可以查看当前 HBase 支持的过滤器类型。 

使用过滤器的语法格式如下所示: 

scan '表名'{Filter => ”过滤器(比较运算符,’比较器’)

Filter=>指明过滤的方法,整体可用大括号引用,也可以不用大括号。过滤的方法使用 

双引号引用,而比较方式用小括号引用。 

在使用过滤器之前先创建这样的表结构: 

具体执行命令如下: 

创建表:create 'Student''StuInfo''Grades' 

插入第一个逻辑行的数据: 

put 'Student', '001', 'StuInfo:name','alice' 

put 'Student', '001', 'StuInfo:age','18' 

put 'Student', '001', 'StuInfo:sex','female' 

put 'Student', '001', 'Grades:english','80' 

put 'Student', '001', 'Grades:math','90' 

同样插入其他两行数据。 

1.行键过滤器 

包括 RowFilterPrefixFilterKeyOnlyFilterFirstKeyOnlyFilter 等 

格式:scan ‘表名{Filter =>“过滤器比较运算符,比较器’)”} 

1RowFilter:针对行键进行过滤 

例 1:显示行键前缀为 开头的键值对; 

scan 'student',{FILTER=>"RowFilter(=,'substring:001')"} 

例 2:显示行键字节顺序大于 002 的键值对; 

scan 'student',FILTER=>"RowFilter(>,'binary:002')" 

2PrefixFilter:行键前缀过滤器 

例 3:扫描前缀为 001 的行键 

scan 'student',FILTER=>"PrefixFilter('001')" 

3FirstKeyOnlyFilter:扫描全表,显示每个逻辑行的第一个键值对 

例 4: scan 'student',FILTER=>"FirstKeyOnlyFilter()" 

4InclusiveStopFilter:替代 ENDROW 返回终止条件行; 

例 5:扫描显示行键 001 到 002 范围内的键值对 

此条命令等同于: 

2.列族与列过滤器 

1FamilyFilter:针对列族进行比较和过滤。 

例 1:显示列族前缀为 stu 开头的键值对; 

scan 'student',FILTER=>"FamilyFilter(=,'substring:stu’) "

scan 'student',FILTER=>"FamilyFilter(>=,‘binary:stu’) "

2QualifierFilter:列标识过滤器。 

例 2:显示列名为 name 的记录; 

scan 'student',FILTER=>"QualifierFilter(=,'substring:name')" 

3ColumnPrefixFilter:对列名前缀进行过滤。 

例 2:显示列名为 name 的记录; 

scan 'student',FILTER=>"ColumnPrefixFilter('name') " 

等价于 scan 'student',FILTER=>"QualifierFilter(=,'substring:name')" 

(4MultipleColumnPrefixFilter:可以指定多个前缀 

例 3:显示列名为 name 和 age 的记录; 

scan 'student',FILTER=>"MultipleColumnPrefixFilter('name','age')" 

5ColumnRangeFilter :设置范围按字典序对列名进行过滤; 

scan 'student',FILTER=>"ColumnRangeFilter('bi',true,'na',true)" 

3.值过滤器 

1ValueFilter :值过滤器。 

例 1:查询值等于 19 的所有键值对 

scan 'student',FILTER=>"ValueFilter(=,'binary:19') " 

scan 'student',FILTER=>"ValueFilter(=,'substring:19') 

2SingleColumnValueFilter :在指定的列族和列中进行值过滤器。 

例 2:查询 stuinfo 列族 age 列中值等于 19 的所有键值对 

scan 'student',{COLUMN=>'stuinfo:age',FILTER=>"SingleColumnValueFilter('stuinfo','age',=,'binary: 19')"} 

4.其他过滤器 

1ColumnCountGetFilter :限制每个逻辑行返回的键值对数 

例 1:返回行键为 001 的前 个键值对 

get 'student','001',FILTER=>"ColumnCountGetFilter(3)" 

2PageFilter :基于行的分页过滤器,设置返回行数。 

例 2:显示一行 scan 'student',FILTER=>"PageFilter(1)" 

3ColumnPaginationFilter :基于列的进行分页过滤器,需要设置偏移量与返回数量 。 

例 3:显示每行第 列之后的 个键值对 

scan 'student',FILTER=>"ColumnPaginationFilter(2,1)" 

5python hbase 过滤器编程。 

编程输出 Student1 表中行键前缀为 00、列标识为 Name 的值。 

from thrift import Thrift 

from thrift.transport import TSocket 

from thrift.transport import TTransport 

from thrift.protocol import TBinaryProtocol 

from hbase import Hbase 

from hbase.ttypes import * 

host = '172.16.3.68' 

port = 9090 

table = 'Student1' 

transport = TSocket.TSocket(host, port) 

transport = TTransport.TBufferedTransport(transport) 

protocol = TBinaryProtocol.TBinaryProtocol(transport) 

client = Hbase.Client(protocol) 

transport.open() 

ss = client.scannerOpenWithPrefix("Student1","00",["StuInfo:Name"])

print("ss:",client.scannerGetList(ss,10)) 

#关闭 scannerId 

client.scannerClose(ss) 

程序运行结果: 

scannerOpenWithPrefix(tableName,startAndPrefix,columns):在指定表中,扫描具有指定 

前缀的行,扫描指定列的数据。返回一个 ScannerIDint 类型 

tableName:表名 

startAndPrefix:行前缀 

columns:列名列表,list 类型 

6. Hbase 批量数据导入。把/home/hadoop/datafile 目录下 music1.txtmusic2.txt、 

music3.txt 三个记事本文件数据导入到 hbase 中的 ms 表中。参考命令如下: 

  1. hbase shell 中建表:create 'ms','info' 

2hadoop fs -mkdir /user/hduser/ms 

3hadoop fs -put music1.txt music2.txt music3.txt /user/hduser/ms 

4hbase org.apache.hadoop.hbase.mapreduce.ImportTsv -Dimporttsv.columns=tmp -Dimporttsv.columns=HBASE_ROW_KEY,info:name,info:singer,info:gender,info:ryghme,info:terminal ms /user/hduser/ms 

5hbase shell 中查看表数据:scan 'ms' 

思考题:HBase 的过滤器有哪些?分别具有什么作用? 

HBase 是一个分布式、面向列的NoSQL数据库,它提供了各种过滤器来帮助你在检索数据时进行过滤和筛选。这些过滤器可以用于扫描和查询操作,以便只返回符合特定条件的数据。以下是一些常见的 HBase 过滤器以及它们的作用:

1. SingleColumnValueFilter:

   - 作用:根据指定列的值进行过滤。

   - 用途:允许你筛选出特定列的值等于或不等于指定值的行。

2. SingleColumnValueExcludeFilter:

   - 作用:与 SingleColumnValueFilter 类似,但是它排除满足条件的行而不返回它们。

   - 用途:用于排除特定列的值等于或不等于指定值的行。

3. FamilyFilter:

   - 作用:基于列族进行过滤。

   - 用途:可以用于只检索特定列族的数据,或排除特定列族的数据。

4. QualifierFilter:

   - 作用:基于列限定符(Qualifier)进行过滤。

   - 用途:允许你只返回包含或不包含特定列限定符的列。

5. RowFilter:

   - 作用:基于行键进行过滤。

   - 用途:可以用于根据行键的前缀或模式来筛选行。

6. PrefixFilter:

   - 作用:根据行键的前缀进行过滤。

   - 用途:用于筛选出具有特定前缀的行。

7. PageFilter:

   - 作用:限制返回的结果数量。

   - 用途:允许你指定最大返回行数,通常用于分页查询。

8. TimestampsFilter:

   - 作用:基于时间戳进行过滤。

   - 用途:可以用于筛选出特定时间范围内的数据。

9. ValueFilter:

   - 作用:基于值进行过滤。

   - 用途:可以用于只返回具有特定值的行。

10. CompareFilter:

    - 作用:根据自定义的比较器进行过滤。

    - 用途:允许你定义自己的比较逻辑来筛选数据。

这些过滤器可以根据你的需求组合使用,以实现复杂的数据检索和过滤操作。你可以根据具体的业务需求选择合适的过滤器来优化查询性能并满足数据检索要求。注意,HBase 过滤器通常在客户端应用程序中配置和使用,以便在查询数据时应用过滤条件。

小结 

掌握使用 HBase 过滤器进行全表扫描。注意区分 hbase shell 命令和 linux 命令。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/262283.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

中国自动驾驶行业:迈向无限可能

中国自动驾驶行业正在经历蓬勃发展,取得了令人瞩目的成果。这一行业在技术创新、政策支持和市场需求等方面展现出巨大潜力。本文将从技术创新、产业生态和前景发展等角度,探讨中国自动驾驶行业的现状和未来前景。 中国自动驾驶行业正处于一个令人瞩目的快…

Codeforces Round 638 (Div. 2)B. Phoenix and Beauty(思维构造)

B. Phoenix and Beauty 这道题目学到的东西: 从给出的数据范围观察,得到一些有用信息(峰哥教的)考虑无解的情况‘ 其实这题考虑怎么操作是比较难的,如果能想出来满足条件的结果就比较好了(我在说什么我自…

ASP.NET Core基础之定时任务(二)-Quartz.NET入门

阅读本文你的收获 了解任务调度框架QuartZ.NET的核心构成学会在ASP.NET Core 中使用QuartZ.NET 在项目的开发过程中,难免会遇见需要后台处理的任务,例如定时发送邮件通知、后台处理耗时的数据处理等,上次分享了ASP.NET Core中实现定时任务的…

vitepress项目使用github的action自动部署到github-pages中,理论上可以通用所有

使用github的action自动部署到github-pages中 创建部署的deploy.yml文件,在项目的根目录下面 .github\workflows\deploy.yml 完整的代码:使用的是pnpm进行依赖安装。 name: 部署VitePresson:push:branches:- docs # 这段是在推送到 docs 分支时触发该…

EfficientDet:Scalable and Efficient Object Detection中文版 (BiFPN)

EfficientDet: Scalable and Efficient Object Detection EfficientDet:可扩展和高效的目标检测 摘要 模型效率在计算机视觉中变得越来越重要。本文系统地研究了用于目标检测的神经网络架构设计选择,并提出了几个关键的优化方法来提高效率。首先&…

[node]Node.js 中REPL简单介绍

[node]Node.js 中REPL简单介绍 什么是REPL为什么使用REPL如何使用REPL 命令REPL模式node的全局内容展示node全局所有模块查看全局模块具体内容其它命令 实践 什么是REPL Node.js REPL(Read Eval Print Loop:交互式解释器) 表示电脑的环境,类似 Windows 系统的终端或…

【大数据存储与处理】第一次作业

hbase 启动步骤 1、启动 hadoop,master 虚拟机,切换 root 用户,输入终端命令:start-all.sh 2、启动 zookeeper,分别在 master、slave1、slave2 虚拟机终端命令执行:zkServer.sh start 3、启动 hbase&#x…

ToB还是ToC?工业级与消费级AR眼镜都能干什么?

来源:虹科数字化与AR 虹科分享 | ToB还是ToC?工业级与消费级AR眼镜都能干什么? 原文链接:https://mp.weixin.qq.com/s/lyTASoKm29woIbfcKBtMvQ 欢迎关注虹科,为您提供最新资讯! 随着科技的飞速发展&#…

vue element plus 管理系统路由菜单简要设计(后端获取菜单)

1 需求 管理系统“菜单”由后端接口返回,前端需要根据后端返回的“菜单”数组,构造路由,渲染侧栏菜单有些菜单是子菜单,有对应的路由,但是不在侧栏显示(比如一些详情页面) 注:这里的…

HTML美化网页

使用CSS3美化的原因 用css美化页面文本,使页面漂亮、美观、吸引用户 可以更好的突出页面的主题内容,使用户第一眼可以看到页面主要内容 具有良好的用户体验 <span>标签 作用 能让某几个文字或者某个词语凸显出来 有效的传递页面信息用css美化页面文本&#xff0c;使页面漂…

四、Spring IoC实践和应用(基于注解方式管理 Bean)

本章概要 基于注解方式管理 Bean 实验一&#xff1a; Bean注解标记和扫描 (IoC)实验二&#xff1a; 组件&#xff08;Bean&#xff09;作用域和周期方法注解实验三&#xff1a; Bean属性赋值&#xff1a;引用类型自动装配 (DI)实验四&#xff1a; Bean属性赋值&#xff1a;基本…

如何用docke启动redis?(解决双击docker服务闪退问题)

要使用Docker启动Redis服务&#xff0c;您可以按照以下步骤进行操作&#xff1a; 安装Docker&#xff1a; 如果您还没有安装Docker&#xff0c;请先在您的系统上安装Docker。您可以从Docker官方网站获取安装说明。 https://www.docker.com/get-started/ 2.在Docker Hub上查找R…

论文中公式怎么降重 papergpt

大家好&#xff0c;今天来聊聊论文中公式怎么降重&#xff0c;希望能给大家提供一点参考。 以下是针对论文重复率高的情况&#xff0c;提供一些修改建议和技巧&#xff0c;可以借助此类工具&#xff1a; 论文中公式怎么降重 一、引言 在论文撰写过程中&#xff0c;公式是表达学…

声音克隆:让你的声音变得无所不能

什么是声音克隆&#xff1f; 声音克隆是一种利用人工智能技术&#xff0c;根据一段声音样本&#xff0c;生成与之相似或完全相同的声音的过程。声音克隆可以用于多种场景。 声音克隆的原理是利用深度学习模型&#xff0c;从声音样本中提取声音特征&#xff0c;然后根据目标文…

华为OD机试 - 发广播 - 并查集(Java 2023 B卷 200分)

目录 专栏导读一、题目描述二、输入描述三、输出描述1、输入2、输出3、说明 四、并查集Java 实现并查集 五、Java算法源码六、效果展示1、输入2、输出3、说明 华为OD机试 2023B卷题库疯狂收录中&#xff0c;刷题点这里 专栏导读 本专栏收录于《华为OD机试&#xff08;JAVA&…

机器学习算法(12) — 集成技术(Boosting — Xgboost 分类)

一、说明 时间这是集成技术下的第 4 篇文章&#xff0c;如果您想了解有关集成技术的更多信息&#xff0c;您可以参考我的第 1 篇集成技术文章。 机器学习算法&#xff08;9&#xff09; - 集成技术&#xff08;装袋 - 随机森林分类器和...... 在这篇文章中&#xff0c;我将解释…

​创新驱动,边缘计算领袖:亚马逊云科技海外服务器服务再进化

2022年亚马逊云科技re:Invent盛会于近日在拉斯维加斯成功召开&#xff0c;吸引了众多业界精英和创新者。亚马逊云科技边缘服务副总裁Jan Hofmeyr在演讲中分享了关于亚马逊云科技海外服务器边缘计算的最新发展和创新成果&#xff0c;引发与会者热烈关注。 re:Invent的核心主题是…

057:vue组件方法中加载匿名函数

第057个 查看专栏目录: VUE ------ element UI 专栏目标 在vue和element UI联合技术栈的操控下&#xff0c;本专栏提供行之有效的源代码示例和信息点介绍&#xff0c;做到灵活运用。 &#xff08;1&#xff09;提供vue2的一些基本操作&#xff1a;安装、引用&#xff0c;模板使…

激光打标机:快速、精确、耐用的标记解决方案

随着科技的不断进步&#xff0c;激光打标机已经成为现代工业生产中不可或缺的一部分。作为一种高效、精确、耐用的标记解决方案&#xff0c;激光打标机在各个领域都发挥着重要的作用。 一、快速、精确的标记技术 激光打标机采用激光束作为标记工具&#xff0c;通过精确控制激光…

华为鸿蒙操作系统简介及系统架构分析(2)

接前一篇文章&#xff1a;华为鸿蒙操作系统简介及系统架构分析&#xff08;1&#xff09; 本文部分内容参考&#xff1a; 鸿蒙系统学习笔记(一) 鸿蒙系统介绍 特此致谢&#xff01; 上一回对于华为的鸿蒙操作系统&#xff08;HarmonyOS&#xff09;进行了介绍并说明了其层次化…