今天需要从的 hbase 使用 sql 来查询数据,于是想到了使用 phoenix 工具,在自己的环境里大概试了一下,一下子就通了,就这么神奇。...hbase 服务 cd hbase-1.4.9/bin ....active connection: #0 open jdbc:phoenix:thin:url=http://localhost:8765;serialization=PROTOBUF # 查询表...INTO users (id, username, password) VALUES (1, 'kongxx', 'Letmein'); 1 row affected (0.033 seconds) # 查询数据..., A.A1, A.A2, B.B1, B.B2) VALUES (2, 'a21', 'a22', 'b21', 'b22'); 1 row affected (0.015 seconds) # 查询数据
官方介绍 Apache Hbase是Hadoop数据库,一个分布式、可扩展、大数据存储。 当你需要随机地实时读写大数据时使用Hbase。它的目标是管理超级大表-数十亿行X数百万列。...Hbase世界 Hbase虽然弱化了结构,但并不等于放任不管。传统关系型数据库在插入数据前表结构(即所有列和列的数据类型)已经是严格确定的。...Hbase的表在放入数据前也有需要确定下来的东西,那就是Column Family(常译为列族/列簇)。单词Family就是家庭的意思,所以列族就是列的家庭。...此时去查询获取的是新数据,仿佛是更新了,但其实只是默认返回了最新版本的数据而已。如下图: ? 时间戳.png 一个行键、列族、列修饰符、数据和时间戳组合起来叫做一个单元格(Cell)。...row.png 在Hbase中,只要确定了列族(具体的列不用管),表(Table)就确定了。如下图: ?
HBase原生自带了对RowKey的很多种查询策略。...通过这个过滤器可以在HBase中的数据的多个维度(行,列,数据版本)上进行对数据的筛选操作,也就是说过滤器最终能够筛选的数据能够细化到具体的一个存储单元格上(由行键,列明,时间戳定位)。...,列,值等的过滤 SingleColumnValueFilter 单值过滤器是以特定“列”的“值”为过滤内容,值得是单列的值。...而行值过滤器比较的是所有列的值。与其进行比较。 FilterMissing 指的是对于找不到该列的行的时候,做的特殊处理。...TimestampsFilter 这里参数是一个集合,只有包含在集合中的版本才会包含在结果集中 由于其原生带有PrefixFilter这种对ROWKEY的前缀过滤查询,因此想着实现的后缀查询的过程中
写作目的 1)正好有些Spark连接HBase的需求,当个笔记本,到时候自己在写的时候,可以看 2)根据rowkey查询其实我还是查询了好久才找到,所以整理了一下 3)好久没发博客了,水一篇 版本 Scala.../ //rowKey // val key: String = Bytes.toString(result.getRow) // //列族...rowkey, result) => { //rowKey val key: String = Bytes.toString(result.getRow) //列族...,列,值 val value: String = Bytes.toString(result.getValue(Bytes.toBytes("datatype"), Bytes.toBytes...根据rowkey多个值过滤查询(scala环境)_裴大帅2021_新浪博客
唯一原则 RowKey 本身具有唯一性, 写入相同RowKey的数据下相同的列会被覆盖。 排序原则 数据的存储是按照RowKey进行字典方式升序存储,主要是为了方便检索。...散列原则 设计的RowKey应均匀的分布在各个HBase节点上,避免产生热点。...多维查询场景 多维查询也就是多条件查询,需要任意维度的组合查询,但是HBase 并不擅长做数据分析,为了保证查询性能,因此通常会在离线侧或者实时侧将多维任意组合的数据指标提前加工好写入HBase 中(即...HBase 本身存储是按照RowKey 字典顺序排序的, 在数据扫描时也是按照startRowKey作为起始值顺序查询出数据。...只能通过扫描全表数据进行然后进行内存分页, 因此这种方式只能数据量较少的情况下使用 二级索引分页:使用es 做索引,通过es分页查询查询出rowKey, 然后查询HBase 中数据, 将scan操作转换为批量
界面操作说明 进入hue中的hbase 进入表的查询界面 界面说明 查询语句 ,表示结束查询,可以不加 主键查询 输入主键 rowkey1,rowkey2 说明:只输入主键查询 例1:00000051...>*+(n-1) 根据列名模糊查询,col1 to col2显示col1到col2之间的列 例1:00000051|* +9 [i:ts,i:path] 例2:00000051|* +9 [i:p*+...ValueFilter(=,'binary:111') 列值等于111 以上过滤器是大部分常用的过滤器,在hue-hbase中另有一些过滤器未在此文档中描述。...以下是我自己整理的一部分参考语法: hbase中有单纯根据列值查询的ValueFilter和根据列名和列值查询的SingleColumnValueFilter,可根据需要选择。...下表中是按照根据列名和列值来进行查询的参考 SQL hue_hbase select col1,col2 [col1,col2] where col1="student" SingleColumnValueFilter
分布式NoSQL列存储数据库Hbase(九) 知识点01:课程回顾 知识点02:课程目标 MapReduce读写Hbase 重点:记住读写的规则 Spark中读写Hbase规则与MapReduce...是列族的一个属性,用于数据查询时对数据的过滤,类似于ORC文件中的布隆索引 实现 列族属性:BLOOMFILTER => NONE | ‘ROW’ | ROWCOL NONE :不开启布隆过滤器...自动判断是否包含需要的rowkey,如果包含就读取这个文件,如果不包含就不读这个文件 ROWCOL:行列级布隆过滤 生成StoreFile文件时,会将这个文件中有哪些Rowkey的以及对应的列族和列的信息数据记录在文件的头部...当读取StoreFile文件时,会从文件头部或者这个StoreFile中的所有rowkey以及列的信息,自动判断是否包含需要的rowkey以及列,如果包含就读取这个文件,如果不包含就不读这个文件 总结...Hbase通过布隆过滤器,在写入数据时,建立布隆索引,读取数据时,根据布隆索引加快数据的检索 知识点15:Hbase优化:列族属性 知识点16:Hbase优化:其他优化 附录一:Maven依赖
在生产中,我们设计列族时会将具有相似属性的比如IO特性或者将经常一起查询的列放到一个列族中,可以减少文件的IO、寻址时间,从而提高性能。...每个列族在文件层面上是以单独的文件存储的。但是不同的列族,却可能会共享一个region。这就会导致一个问题: HBase 表中列族A的数据有100万行,但是列族B可能才1000行。...当进行region split时,会列族B也进行切分,从而导致这1000行数据也分布在多个不同region中,最终导致查询数据时,导致寻址时间等增加,影响性能。...如果一个HBase表中设置过多的列族,则可能引起以下问题: 一个region中存有多个store,当region分裂时导致多个列族数据存在于多个region中,查询某一列族数据会涉及多个region导致查询效率低...当一个列族出现压缩或缓存刷新时,因为关联效应会引起临近的其他列族做同样的操作,在列族过多时会涉及大量的IO开销 所以,我们在设计HBase表的列族时,遵循以下几个主要原则,以减少文件的IO、寻址时间:
我们在用hbase的api对hbase进行scan操作的时候,可以设置caching和batch来提交查询效率,那它们之间的关系是啥样的呢,我们又应该如何去设置? 首先是我们的客户端代码。...当caching和batch都为1的时候,我们要返回10行具有20列的记录,就要进行201次RPC,因为每一列都作为一个单独的Result来返回,这样是我们不可以接受的。...接着我们继续看下图 一次查询20条记录的话,只需要3次RPCs,列数在10列以内的数据,取20条,20/10即可,为什么是3呢,因为还有一次RPC是用来确认的。...这就好说啦,这样我们就可以用来优化我们的scan查询了,在查询的时候,按照查询的列数动态设置batch,如果全查,则根据自己所有的表的大小设置一个折中的数值,caching就和分页的值一样就行。
简介 在 Hive 表中可能存在很多列,也有可能就存在几列。如果我们想要表中所有列,毫无疑问我们可以使用 SELECT *。但在某些情况下,我们可能拥有 100 多列,并且我们只不需要其中几列。...在这种情况下,之前都是手动的添加 SELECT 查询中的所有列名。由于列数很多,比较啰嗦。因此,我们希望能在 Hive 中从 SELECT 查询中排除某些列。 2....此表中一共有100多列,如下图所示(只展示了8列): ? 如果我们不想要 event_ts 这一列。我们会使用如下查询来排除这一列: SELECT `(event_ts)?...., prov, city FROM ; 如果我们不想要 event_ts 和 event_tm 两列。...我们会使用如下查询来排除这两列: SELECT `(event_ts|event_tm)?+.+` FROM ; 如果我们要排除多列,使用 | 分割。
二、操作说明 查看Zookeeper内部HBase相关数据,有两个主要的渠道:一、通过Hbase shell命令zk_dump查看;二、通过zk_cli.sh查看; 三、zk_dump 1 HBase...is rooted at /hbase 2 Active master address: localhost,60000,1411261739960 3 Backup master addresses...: 4 Region server holding hbase:meta: localhost,60020,1411261739301 5 Region servers: 6 localhost...,60020,1411261739301 7 /hbase/replication: 8 /hbase/replication/peers: 9 /hbase/replication/rs:...10 /hbase/replication/rs/localhost,60020,1411261739301: 11 Quorum Server Statistics: 12 192.168.230.128
最近群里面讨论HBASE的使用场景,以及是会没落,这个还真是一句话说不清楚。本文讲其中一个场景:详单查询。 背景 某电信项目中采用HBase来存储用户终端明细数据,供前台页面即时查询。...HBase无可置疑拥有其优势,但其本身只对rowkey支持毫秒级的快速检索,对于多字段的组合查询却无能为力。...针对HBase的多条件查询也有多种方案,但是这些方案要么太复杂,要么效率太低,本文只对基于Solr的HBase多条件查询方案进行测试和验证。...原理 基于Solr的HBase多条件查询原理很简单,将HBase表中涉及条件过滤的字段和rowkey在Solr中建立索引,通过Solr的多条件查询快速获得符合过滤条件的rowkey值,拿到这些rowkey...之后在HBASE中通过指定rowkey进行查询。
分布式NoSQL列存储数据库Hbase_列族的设计(五) 知识点01:课程回顾 Hbase存储原理 存储架构 Hbase:对外提供分布式内存 Master:集群管理 RegionServer...目录:/hbase Hbase数据:/hbase/data NS目录 Table的目录 Region的目录 列族的目录...Rowkey的前缀 目的:尽量走索引查询 唯一原则:每条Rowkey是不能重复 目的:唯一标识一条数据 组合原则:将最常用的几个查询条件组合构建Rowkey 目的:尽量大部分查询都走索引...随机取某一列的一个值 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9a9g0u0B-1616666919964)(20210322_分布式NoSQL列存储数据库Hbase...Rowkey 知识点09:聊天系统案例:测试写入代码 知识点10:聊天系统案例:查询需求分析 知识点11:聊天系统案例:测试查询代码 知识点12:聊天系统案例:查询问题 知识点13:二级索引 附录一:Maven
序 本文主要展示如何使用mysql的多列组合查询 何为多列组合查询呢,就是查询的值不再是单个列的值,而是组合列的值。...40); insert into t_demo(name,score) values('d',50); insert into t_demo(name,score) values('e',60); 多列in...查询 select * from t_demo where (name,score) in (('c',30),('e',60)); +----+------+-------+ | id | name...查询 select * from t_demo where (name,score) = ('c',30) or (name,score) = ('e',60); +----+------+------...-+ | 3 | c | 30 | | 6 | e | 60 | +----+------+-------+ 2 rows in set Time: 0.119s 小结 多列组合查询平常比较少见
MySQL Timestamp列按照日期格式查询 假如UpdateTime列的值是: 2020-12-17 13:51:08 MySQL: SELECT * FROM Test WHERE DATE(UpdateTime
文章目录 分布式NoSQL列存储数据库Hbase(六) 知识点01:回顾 知识点02:目标 知识点03:SQL on Hbase 知识点04:Hive on Hbase 介绍 知识点05:Hive on...Rowkey设计 业务原则:将最常用的查询条件的字段作为Rowkey的前缀 唯一原则:保证每一个Rowkey表示唯一的一条数据 组合原则:尽量将常用的几个查询字段组合作为rowkey 散列原则:构建不连续的...列族设计 长度原则:名称没有别的意义,满足标识以后,越短越好 个数原则:列族的个数不超过3个 1个:如果列的个数比较少 2个或者3个:如果列的个数达到30个及以上 2....Hbase支持SQL,支持JDBC方式对Hbase进行处理 Hbase的结构是否能实现基于SQL的查询操作?...数据构建结构化的数据形式 可以用SQL来实现处理 实现 将Hbase表中每一行对应的所有列构建一张完整的结构化表 如果这一行没有这一列,就补null Hive:通过MapReduce来实现 Phoenix
最近工作需要使用到Spark操作Hbase,上篇文章已经写了如何使用Spark读写Hbase全量表的数据做处理,但这次有所不同,这次的需求是Scan特定的Hbase的数据然后转换成RDD做后续处理,简单的使用...Google查询了一下,发现实现方式还是比较简单的,用的还是Hbase的TableInputFormat相关的API。...基础软件版本如下: 直接上代码如下: 上面的少量代码,已经完整实现了使用spark查询hbase特定的数据,然后统计出数量最后输出,当然上面只是一个简单的例子,重要的是能把hbase数据转换成RDD,只要转成...注意上面的hbase版本比较新,如果是比较旧的hbase,如果自定义下面的方法将scan对象给转成字符串,代码如下: 最后,还有一点,上面的代码是直接自己new了一个scan对象进行组装,当然我们还可以不自己
在正常应用场景中,常常会从HIVE中直接获取某个DATAFRAME,这个dataframe除了与数据表中某些字段的提取,还往往会涉及到一些常量列的添加,用以如区分数据等场景。...就实现了在某个表的原有字列后面添加a, hours两个字段。且这两个字段的数值都为常量。 效果如下:
在这篇博客中,我们将看看如何使用MySQL 5.7的虚拟列来提高查询性能。...原因很简单:在虚拟列的帮助下,我们可以创建间接索引(fine-grained indexes),可以显著提高查询性能。...在这种情况下,我们有许多处理方法: 创建时间戳列和GROUP BY列的联合索引; 创建一个覆盖索引(包含所有查询字段); 仅对GROUP BY列创建索引; 创建索引松散索引扫描。...Created and index on top of the virtual column 现在我们可以修改查询语句,GROUP BY verb_url_hash列: Now we can change...结论 MySQL 5.7的生成列提供一个有价值的方法来提高查询性能。如果你有一个有趣的案例,请在评论中分享。
领取专属 10元无门槛券
手把手带您无忧上云