导航:首页 > 程序命令 > hbaserowkey查询命令

hbaserowkey查询命令

发布时间:2023-04-03 01:16:25

1. 用happybase happy地查询hbase数据

用happybase进行hbase中数据的增删改查

前提:已经安装happybase库(pip install happybase),已有hbase环境并开启thrift通讯端口(nohup hbase thrift start &),thrift默认端口为9090,10.10.30.200为hbase主机ip

scan方法:

参数:

row_start、row_stop:起始和终止rowkey,查询两rowkey间的数据

row_prefix:rowkey前缀。注:使用row_prefix的时候,row_start和row_stop不能使用

filter:要使用的过滤器(hbase 0.92版本及以上生效)

timestamp:按指定时间戳查询

reverse:默认为False。为True时,scan结果按rowkey倒序排列

e.g:

put方法:

e.g:

△ 如put中的rowkey已存在,则为修改数据

delete方法:

row:删除rowkey为row的数据

columns:指定columns参数时,删除

e.g:

删除rowkey为student2的name数据:

删除成功:

batch方法:

1、批量操作

2、使用with管理批量

row方法及rows()方法,检索指定rowkey的数据

检索一条:

检索多条:

返回结果:

e.g:

结果:

暂时就这些0v0

2. hbase 命令如何查是否有rowkey为空的值

不要用这个,hbase查询的时候可以设start和end。还有一个是可以根据offset查。用正规能搞死你,一定要提前设计好自己的key。否则数据海量的时候有你受的。

3. hbase如何根据某个列的值,查询出这个列的ro

刚才理解错了,你是要在C列显示对应A列的B列值,修改一下答案
在c列第一个单元格C1复制如下公式:
=VLOOKUP(A1,sheet1!$A$1:$B$n,2,0)
其中n为A列最后一个单元格行数
然后把B1向下填充到其他B列单元格,公示应该会自动变为
=VLOOKUP(A2,sheet1!$A$1:$B$n,2,0)
=VLOOKUP(A3,sheet1!$A$1:$B$n,2,0)
......
=VLOOKUP(An,sheet1!$A$1:$B$n,2,0)
这样应该可行,我没试验过你这种情况。你应该仔细看看VLOOKUP()这个函数的用法

下面是我给别人写的,不过对方说没看懂,你看看:
如果你有一个数据表,而另一个表格需要自动读取这个数据表内的数据,函数VLOOKUP()就很有用了。
下面简单说一下:
函数VLOOKUP()用法:
例子 公式如下
=VLOOKUP(F5,Sheet2!$F$4:$W$957,2,0)
其中第一个参数F5为查找值,即使用该公式的单元格内的数据是根据F5单元格内的数据查找出来的,例如你把姓名放在F列,其中F5是一个叫张三的人,G列是身份证号。G5要查找张三的身份证号,就可以在G5用函数VLOOKUP()
第二个参数是数据表,就是由哪一个数据表的哪几列数据为查找范围,【Sheet2!】就是数据表名,$F$4(F4)就是范围的左上角单元格,$W$957(W957)就是右下角单元格,查找范围就是在这个矩形内。其中F列数据必须是第一个参数F5的比照列,简单来说就是第一个参数F5的数值应该在查找的数据表的F列内。且F列必须是查找范围的第一个列该公式才起作用。举例你要查找张三,那么张三在Sheet2数据表查找范围内的所在列必须是查找范围内的第一列。F4写成$F$4是为了固定该单元格,否则在复制公式的时候excel会自动递加单元格数值,F4在复制的时候可能会变成F5、F6...,造成查找范围改变
第三个参数是列数,就是该函数返回的是第几列的数值,该列数是相对列数,即查找范围内的第几列。例如Sheet2工作表内的F列在整个表格内属于第6列,但在查找范围内的相对列数是第1列。假如张三的身份证在G列内,那么就是返回查找范围的第二列。
第四个参数是匹配条件,一般为0。

下面举一个具体使用的例子。
假设你有一个excel文件,里面的sheet1工作表记录的是单位人员姓名及人员身份证号,你现在需要创建一个新excel文件,记录单位人员的三险一金,里面需要输入人员的身份证号,如果再一个一个输入,重复劳动效率低不说,很有可能输错了,这时候你就可以从以前那个excel文件中读取这些人员的身份证号。
在新表中先输入人员姓名(如果你用人员序号作比对的话,姓名也可以自动读取),然后在需要输入身份证号的地方点击上面的【fx】,出现【插入函数】的对话框,在类别中选择【查找和引用】,最后一个就是VLOOKUP,选中它,点【确定】,然后出现【函数参数】对话框,【Lookup-value】为第一个参数,点击旁边的表格红箭头图标,选中新表中需要查找身份证号的那个人的姓名单元格;【table-array】为第二个参数,顾名思义是表格数组,包含行列的一个范围,就是查找范围,点击旁边表格红箭头图标,在老表sheet1中框选所有姓名和身份证号,保证老表中姓名在第一列;【col-index-num】为第三个参数,看看老表中身份证号在选择范围是第几列,就写上几。假如老表内身份证号紧跟着姓名,因为姓名列是范围内的第一列,那么身份证号就是第二列;【range-lookup】为第四个参数,写上0。全部弄好以后,回到新表看看身份证号是不是已经自动读出来了。如果没有一是查查这个人在老表中有没有,名字有没有空格,还有你选择的第三个参数列数对不对,注意有没有隐藏列,因为隐藏列虽然看不到,但是也计算在列数里面。如果没问题,将公示复制到所有需要读取身份证的单元格内。
这样有一个问题,因为你新表读取的是文件外的数据,所以必须保证老表文件位置不能变动,否则新表就不知道去哪里找数据了。解决方法有三个,一是保证老表文件位置永远不动(废话);二是在操作前先把老表数据复制到新表所在的文件内,单独作为一个sheet工作表存在,然后再查找新表复制后的数据,因为在同一个文件内,不用担心数据源丢失问题;三是不复制老表,新表读取数据后,选中读取的数据,点击【复制】,然后在原位置点击【选择性粘贴】,选中粘贴【数据】,这样公式会被公式读取的数据覆盖,就和数据源没有关系了。
还会遇到一个问题,如果老表没有数据,比如说老表内李四这个人当时就没有输入身份证号,那么新表内李四用公式查出来的身份证号并不是空,而是0,解决这个问题需要加一个if判断语句,如下:
=IF(你的公式=0,"",你的原公式)
还有就是,如果数据查找出错,会出现#N/A或者#VALUE,也可以用if语句取消,如下:
=IF(ISERROR(你的公式),"",你的公式)
不过不建议这样做,有错误提示才能知道去查找公式是不是有问题,公式没问题自然不会出现错误提示,没必要人为取消。

4. HBase怎样进行部分rowKey的范围查询

如果前面的xxx_xxx_xxx_没有什么规握敏律的话,只能段带枝用Scan+Filter实现了,如果rowkey前面部分有规律的话,能使用startRow和行盯endRow是最好的

5. HBase条件查询(多条件查询)

转 https://blog.csdn.net/PirateLeo/article/details/7956965

文中可能涉及到的API:

Hadoop/HDFS: http://hadoop.apache.org/common/docs/current/api/

HBase: http://hbase.apache.org/apidocs/index.html?overview-summary.html

Begin!

HBase的查询实现只提供两种方式:

1、按指定RowKey获取唯一一条记录,get方法(org.apache.hadoop.hbase.client.Get)

2、按指定的条件获取一批记录,scan方法(org.apache.hadoop.hbase.client.Scan)

实现条件查询功能使用的就是scan方式,scan在使用时有以下几点值得注意:

1、scan可以通过setCaching与setBatch方法提高速度(以空间换时间);

2、scan可以通过setStartRow与setEndRow来限定范围。范围越小,性能越高。

通过巧妙的RowKey设计使我们批量获取记录集合中的元素挨在一起(应该在同一个Region下),可以在遍历结果时获得很好的性能。

3、scan可以通过setFilter方法添加过滤器,这也是分页、多条件查询的基础。

下面举个形象的例子:

我们在表中存储的是文件信息,每个文件有5个属性:文件id(long,全局唯一)、创建时间(long)、文件名(String)、分类名(String)、所有者(User)。

我们可以输入的查询条件:文件创建时间区间(比如从20120901到20120914期间创建的文件),文件名(“中国好声音”),分类(“综艺”),所有者(“浙江卫视”)。

假设当前我们一共有如下文件:

内容列表
ID CreateTime Name Category UserID
1 20120902 中国好声音第1期 综艺 1
2 20120904 中国好声音第2期 综艺 1
3 20120906 中国好声音外卡赛 综艺 1
4 20120908 中国好声音第3期 综艺 1
5 20120910 中国好声音第4期 综艺 1
6 20120912 中国好声音选手采访 综艺花絮 2
7 20120914 中国好声音第5期 综艺 1
8 20120916 中国好声音录制花絮 综艺花絮 2
9 20120918 张玮独家专访 花絮 3
10 20120920 加多宝凉茶广告 综艺广告 4

这里UserID应该对应另一张User表,暂不列出。我们只需知道UserID的含义:

1代表 浙江卫视; 2代表 好声音剧组; 3代表 XX微博; 4代表 赞助商。
调用查询接口的时候将上述5个条件同时输入find(20120901,20121001,"中国好声音","综艺","浙江卫视")。

此时我们应该得到记录应该有第1、2、3、4、5、7条。第6条由于不属于“浙江卫视”应该不被选中。

我们在设计RowKey时可以这样做:采用UserID + CreateTime + FileID组成rowKey,这样既能满足多条件查询,又能有很快的查询速度。

需要注意以下几点:

1、每条记录的RowKey,每个字段都需要填充到相同长度。假如预期我们最多有10万量级的用户,则userID应该统一填充至6位,如000001,000002...

2、结尾添加全局唯一的FileID的用意也是使每个文件对应的记录全局唯一。避免当UserID与CreateTime相同时的两个不同文件记录相互覆盖。

按照这种RowKey存储上述文件记录,在HBase表中是下面的结构:

rowKey(userID 6 + time 8 + fileID 6) name category ....

00000120120902000001

00000120120904000002

00000120120906000003

00000120120908000004

00000120120910000005

00000120120914000007

00000220120912000006

00000220120916000008

00000320120918000009

00000420120920000010

怎样用这张表?

在建立一个scan对象后,我们setStartRow(00000120120901),setEndRow(00000120120914)。

这样,scan时只扫描userID=1的数据,且时间范围限定在这个指定的时间段内,满足了按用户以及按时间范围对结果的筛选。并且由于记录集中存储,性能很好。

然后使用SingleColumnValueFilter(org.apache.hadoop.hbase.filter.SingleColumnValueFilter),共4个,分别约束name的上下限,与category的上下限。满足按同时按文件名以及分类名的前缀匹配。

(注意:使用SingleColumnValueFilter会影响查询性能,在真正处理海量数据时会消耗很大的资源,且需要较长的时间。

在后续的博文中我将多举几种应用场景下rowKey的,可以满足简单条件下海量数据瞬时返回的查询功能)

如果需要分页还可以再加一个PageFilter限制返回记录的个数。

以上,我们完成了高性能的支持多条件查询的HBase表结构设计。

阅读全文

与hbaserowkey查询命令相关的资料

热点内容
java获取手机IP 浏览:812
手机rar解压密码获取 浏览:341
程序员被辞退工资怎么处理 浏览:492
恋活的模型没加密 浏览:157
如何把安卓机的微信转移苹果 浏览:579
爬山算法相关题目 浏览:722
vc编程大全 浏览:114
excel表格单列数据加密 浏览:646
给同事的解压话语 浏览:990
linux关闭网卡命令行 浏览:452
史上最漂亮程序员 浏览:770
java实现excel的导入 浏览:758
光遇账号如何转移安卓 浏览:266
5分之13除以26的算法 浏览:342
兰州安宁区买解压包子 浏览:641
php接收图片代码 浏览:668
hci命令 浏览:662
福建服务器大区云空间 浏览:840
笔杆子程序员 浏览:745
手机软件易验证加密 浏览:589