HBase是采用java语言编写的一款 apache 开源的基于HDFS的NoSQL型数据库,不支持 SQL,不支持事务,不支持Join操作,没有表关系
1.不支持事务
2.主要存储结构化数据以及半结构化的数据
3.HBase中数据存储都是以字节的形式来存储的
4.HBase是易于扩展的
1- 基于rowkey(行键|主键)读取
2- 基于rowkey的range范围读取
3- 扫描全表数据

每一个单元格背后都是具有时间戳的概念的, 默认情况下, 时间戳为插入数据的时间, 当然也可以自定义
如何确定一个唯一的单元格呢? rowkey + 列族 + 列名 + 值
进入shell
hbase shell

查看整个集群的状态信息
status

如何查看帮助文档信息
查看整个帮助文档
help查看某一个具体的命令如何使用
help ‘命令名称’

如何查看当前hbase中有那些表呢?
list

如何创建一张表
格式:
create ‘表名’,‘列族1’,‘列族2’ …
或者
create ‘表名’,{NAME=>‘列族1’},{NAME=>‘列族2’} …


如何向表中插入数据
格式:
put ‘表名’,‘rowkey名称’,‘列族名:列名’,‘值’

如何从表中获取某一条数据呢? 基于rowkey查询
格式:
get ‘表名’,‘rowkey名称’, [‘列族’ | ‘列族:列名’ …]
说明:
[] 表示是可选

如何修改数据呢? 修改数据的操作 与 添加数据的操作是一致的, 只需要保证rowkey一样 就是修改数据

如何删除数据的操作:
格式:
delete ‘表名’,‘rowkey名称’,‘列族:列名’
deleteall ‘表名’,‘rowkey名称’,‘列族:列名’
truncate ‘表名’ 清空表
说明:
1) delete操作, 仅支持删除某一个列下的数据, 仅会删除当前这个版本, 恢复上一个版本
2) deleteall操作, 在删除某一个列数据的时候, 直接将其所有的历史版本全部都删除
3) deleteall操作, 在不指定列族和列名, 仅指定rowkey的时候, 删除整行
说明:
deleteall操作在hbase2.x以上的版本提供的
注意:
truncate操作 一般不使用, 因为此操作在重新建表的时候, 会与原来的表不一致. 比如一些设置参数信息,执行truncate全部都还原了
如何删除表
格式:
drop ‘表名’
注意: 在删除hbase表之前, 必须要先禁用表
禁用表: disable ‘表名’
启动表: enable ‘表名’
判断表是否启用: is_enabled ‘表名’
判断表是否禁用: is_disabled ‘表名’
如何查看表的结构
格式:
describe ‘表名’

如何查看表中有多少条数据:
count ‘表名’

如何通过扫描的方式查询数据, 以及根据范围查询数据
准备工作: 插入一部分数据
put 'test01','rk0001','f1:name','zhangsan'
put 'test01','rk0001','f1:age','20'
put 'test01','rk0001','f1:birthday','2020-10-10'
put 'test01','rk0001','f2:sex','nan'
put 'test01','rk0001','f2:address','beijing'
put 'test01','rk0002','f1:name','lisi'
put 'test01','rk0002','f1:age','25'
put 'test01','rk0002','f1:birthday','2005-10-10'
put 'test01','rk0002','f2:sex','nv'
put 'test01','rk0002','f2:address','shanghai'
put 'test01','rk0003','f1:name','王五'
put 'test01','rk0003','f1:age','28'
put 'test01','rk0003','f1:birthday','1993-10-25'
put 'test01','rk0003','f2:sex','nan'
put 'test01','rk0003','f2:address','tianjin'
put 'test01','0001','f1:name','zhaoliu'
put 'test01','0001','f1:age','25'
put 'test01','0001','f1:birthday','1995-05-05'
put 'test01','0001','f2:sex','nan'
put 'test01','0001','f2:address','guangzhou'
格式:
scan '表名' , {COLUMNS=>['列族' | '列族:列名' ....],
STARTROW=>'起始rowkey值' ,ENDROW=>'结束rowkey值',
FORMATTER=>'toString',LIMIT=>N}
注意
此处 [] 是格式要求, 必须存在
范围检索是包头不包尾






whoami: 查看当前登录用户

exists: 查看表是否存在

alter: 用来执行修改表的操作
增加列族:
alter ‘表名’ ,NAME=>‘新的列族’
删除列族:
alter ‘表名’,‘delete’=>‘旧的列族’
作用:补充hbase的查询方式
格式:
scan '表名',{FILTER=>"过滤器(比较运算符,'比较器表达式')"}
在hbase中常用的过滤器:
rowkey过滤器:
RowFilter: 实现根据某一个rowkey过滤数据
PrefixFilter: rowkey前缀过滤器
列族过滤器:
FamilyFilter: 列族过滤器
列名过滤器:
QualifierFilter : 列名过滤器, 显示对应列的数据
列值过滤器:
ValueFilter: 列值过滤器, 找到符合条件的列值
SingleColumnValueFilter: 在指定列族和列名下, 查询符合对应列值数据的整行数据
SingleColumnValueExcludeFilter : 在指定列族和列名下, 查询符合对应列值数据的整行数据,结果不包含过滤字段
其他过滤器:
PageFilter : 用于分页过滤器
比较运算符: > < >= <= != =
比较器:
BinaryComparator: 用于进行完整的匹配操作
BinaryPrefixComparator : 匹配指定的前缀数据
NullComparator : 空值匹配操作
SubstringComparator: 模糊匹配
比较器表达式:
BinaryComparator binary:值
BinaryPrefixComparator binaryprefix:值
NullComparator null
SubstringComparator substring:值
参考地址:
http://hbase.apache.org/2.2/devapidocs/index.html
从这个地址下, 找到对应过滤器, 查看其构造, 根据构造编写filter过滤器即可
案例:
需求一: 找到在列名中包含 字母 e 列名有哪些
scan 'test01',{FILTER=>"QualifierFilter(=,'substring:e')"}
需求二: 查看rowkey以rk开头的数据
scan 'test01',{FILTER=>"PrefixFilter('rk')"}
scan 'test01',{FILTER=>"RowFilter(=,'binaryprefix:rk')"}
需求三: 查询 年龄大于等于25岁的数据
scan 'test01',{FILTER=>"SingleColumnValueFilter('f1','age',>=,'binary:25')"}
scan 'test01',{FILTER=>"SingleColumnValueExcludeFilter('f1','age',>=,'binary:25')"}





这可能是个愚蠢的问题。但是,我是一个新手......你怎么能在交互式rubyshell中有多行代码?好像你只能有一条长线。按回车键运行代码。无论如何我可以在不运行代码的情况下跳到下一行吗?再次抱歉,如果这是一个愚蠢的问题。谢谢。 最佳答案 这是一个例子:2.1.2:053>a=1=>12.1.2:054>b=2=>22.1.2:055>a+b=>32.1.2:056>ifa>b#Thecode‘if..."startsthedefinitionoftheconditionalstatement.2.1.2:057?>puts"f
1.postman介绍Postman一款非常流行的API调试工具。其实,开发人员用的更多。因为测试人员做接口测试会有更多选择,例如Jmeter、soapUI等。不过,对于开发过程中去调试接口,Postman确实足够的简单方便,而且功能强大。2.下载安装官网地址:https://www.postman.com/下载完成后双击安装吧,安装过程极其简单,无需任何操作3.使用教程这里以百度为例,工具使用简单,填写URL地址即可发送请求,在下方查看响应结果和响应状态码常用方法都有支持请求方法:getpostputdeleteGet、Post、Put与Delete的作用get:请求方法一般是用于数据查询,
我从Ubuntu服务器上的RVM转移到rbenv。当我使用RVM时,使用bundle没有问题。转移到rbenv后,我在Jenkins的执行shell中收到“找不到命令”错误。我内爆并删除了RVM,并从~/.bashrc'中删除了所有与RVM相关的行。使用后我仍然收到此错误:rvmimploderm~/.rvm-rfrm~/.rvmrcgeminstallbundlerecho'exportPATH="$HOME/.rbenv/bin:$PATH"'>>~/.bashrcecho'eval"$(rbenvinit-)"'>>~/.bashrc.~/.bashrcrbenvversions
Ⅰ软件测试基础一、软件测试基础理论1、软件测试的必要性所有的产品或者服务上线都需要测试2、测试的发展过程3、什么是软件测试找bug,发现缺陷4、测试的定义使用人工或自动的手段来运行或者测试某个系统的过程。目的在于检测它是否满足规定的需求。弄清预期结果和实际结果的差别。5、测试的目的以最小的人力、物力和时间找出软件中潜在的错误和缺陷6、测试的原则28原则:20%的主要功能要重点测(eg:支付宝的支付功能,其他功能都是次要的)80%的错误存在于20%的代码中7、测试标准8、测试的基本要求功能测试性能测试安全性测试兼容性测试易用性测试外观界面测试可靠性测试二、质量模型衡量一个优秀软件的维度①功能性功
ES一、简介1、ElasticStackES技术栈:ElasticSearch:存数据+搜索;QL;Kibana:Web可视化平台,分析。LogStash:日志收集,Log4j:产生日志;log.info(xxx)。。。。使用场景:metrics:指标监控…2、基本概念Index(索引)动词:保存(插入)名词:类似MySQL数据库,给数据Type(类型)已废弃,以前类似MySQL的表现在用索引对数据分类Document(文档)真正要保存的一个JSON数据{name:"tcx"}二、入门实战{"name":"DESKTOP-1TSVGKG","cluster_name":"elasticsear
Region是HBase数据管理的基本单位,region有一点像关系型数据的分区。region中存储这用户的真实数据,而为了管理这些数据,HBase使用了RegionSever来管理region。Region的结构hbaseregion的大小设置默认情况下,每个Table起初只有一个Region,随着数据的不断写入,Region会自动进行拆分。刚拆分时,两个子Region都位于当前的RegionServer,但处于负载均衡的考虑,HMaster有可能会将某个Region转移给其他的RegionServer。RegionSplit时机:当1个region中的某个Store下所有StoreFile
我有一个使用SeleniumWebdriver和Nokogiri的Ruby应用程序。我想选择一个类,然后对于那个类对应的每个div,我想根据div的内容执行一个Action。例如,我正在解析以下页面:https://www.google.com/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#q=puppies这是一个搜索结果页面,我正在寻找描述中包含“Adoption”一词的第一个结果。因此机器人应该寻找带有className:"result"的div,对于每个检查它的.descriptiondiv是否包含单词“adoption
我正在我的Rails项目中安装Grape以构建RESTfulAPI。现在一些端点的操作需要身份验证,而另一些则不需要身份验证。例如,我有users端点,看起来像这样:moduleBackendmoduleV1classUsers现在如您所见,除了password/forget之外的所有操作都需要用户登录/验证。创建一个新的端点也没有意义,比如passwords并且只是删除password/forget从逻辑上讲,这个端点应该与用户资源。问题是Grapebefore过滤器没有像except,only这样的选项,我可以在其中说对某些操作应用过滤器。您通常如何干净利落地处理这种情况?
在我做的一些网络开发中,我有多个操作开始,比如对外部API的GET请求,我希望它们同时开始,因为一个不依赖另一个的结果。我希望事情能够在后台运行。我找到了concurrent-rubylibrary这似乎运作良好。通过将其混合到您创建的类中,该类的方法具有在后台线程上运行的异步版本。这导致我编写如下代码,其中FirstAsyncWorker和SecondAsyncWorker是我编写的类,我在其中混合了Concurrent::Async模块,并编写了一个名为“work”的方法来发送HTTP请求:defindexop1_result=FirstAsyncWorker.new.async.
我有一个问题。我想从另一个ruby脚本运行一个ruby脚本并捕获它的输出信息,同时让它也输出到屏幕。亚军#!/usr/bin/envrubyprint"Enteryourpassword:"password=gets.chompputs"Hereisyourpassword:#{password}"我运行的脚本文件:开始.rboutput=`runner`putsoutput.match(/Hereisyour(password:.*)/).captures[0].to_s正如您在此处看到的那样,存在问题。在start.rb的第一行,屏幕是空的。我在运行程序中看不到“输入您的密