HBase在特征工程中的应用

目录

前言

应用场景介绍

Get

进阶-前缀匹配扫描-Scan

灵活的动态列

多版本

快照

总结


前言

HBase是一款分布式的NoSQL DB,可以轻松扩展存储和读写能力。

 

主要特性有:

按某精确的key获取对应的value(Get)

通过前缀匹配一段相邻的数据(Scan)

多版本

动态列

服务端协处理器(可以支持用户自定义)

TTL:按时间自动过期

 

今天我们来聊一聊HBase以上特性在特征工程中的应用,先从最简单的获取一条数据说起:

 

应用场景介绍

Get

这是HBase中最简单的一个查询操作,根据id读某一个id的属性

比如根据用户id获取这个用户的 城市,年龄,标签等信息

(图1)

 


 

进阶-前缀匹配扫描-Scan

 

常见场景:

下图是经典的scan用法

hbase中rowkey是按字典序排列

因此非常经典的用法为:

rowkey:   散列(用户id)_时间戳

然后这样就可以通过制定startkey,endkey来扫描一段时间内的数据,并且这些数据是存储在一起的

 

HBase天生对Scan(扫描)操作有良好的支持,

这里要从HBase的存储特点说起:

NoSQL DB有两种常见的分散数据的方案,一种是按完整的key做hash,数据完全是分散的,另外一种是按Range划分,连续的key存储上是相邻的,这样可以通过在rowkey上做一些业务逻辑的拼接,使得在扫描一定量级逻辑连续的数据的时候,直接扫描的同一块文件下的数据,而不是到分散的各个机器上去查找

HBase选择的是第二种方式来存储数据

 

1.相邻数据通过scan前缀匹配查询  

例如:查某一个用户一个时间段内的数据

(图2)

 

2.为scan操作赋能——Filter

可以根据rowkey,列等维度设置过滤器,减少服务端到客户端的数据传输

 

Tips:过滤器是个好东西,需要的过滤操作在服务端都进行完了,减少了网络传输,只返回符合条件的数据。

但是因为符合条件的数据,可能是在设置的范围中最后一条,所以实际扫描的数据还是Scan的startkey到endkey之间的,还是要注意扫描的范围不要过大

 

 

3.使用Scan的正确姿势

经过一定的测试和实践,我们发现持续的进行Scan,稳定可控的并发下,发起Scan,每次Scan 1000条的时候最佳

因为此场景下HBase的RPC队列会得到快速的消费,从而有能力处理新的请求,而不是一直堆积等待一个大的请求的完成

 

很多同学看到可以做扫描操作,就希望通过扫描操作来查询几百万几千万甚至更多的数据来代替HIVE?

        如果是希望一次性读大量数据的时候(比如加载一个月的几百万用户明细数据,或者通过一个月所有用户明细做聚合),不如直接跑离线任务读文件或者使用预聚合的NoSQL 引擎比较好。

        短小快的请求则可以通过HBase的cache,文件的index,bloomfilter等特性来施展更多。

 

Tips:Get就是一个只读一行的小Scan

 


灵活的动态列

传统数据库以及大部分数据存储需要在建表的时候定义好“字段”,

但是实际应用的时候,比如特征训练中,有很多场景是“字段”或者tag不确定的情况

HBase的动态列则很好的解决了这个问题

 

1.建表不需要指定列名

2.一次取出一个rowkey所有动态列或者多个动态列

3.也可以table.get( list ),一次获取多个id对应的数据

 

在实际应用中的使用:

实际应用中,HBase的每一个Column对应一个特征,RowKey的设计为 md5(业务ID)+时间戳,md5用来对ID散列,使数据均匀分布在不同Region上,时间戳用来在SCAN操作时对时间遍历

摘抄自用户的way社区文章:http://way.xiaojukeji.com/article/13662

 

 


多版本

 

HBase中可以查看版本的N个历史版本,通过数据的时间戳实现的

 

常见场景:

查看某特征随时间变化情况

或者

当发现计算不符合预期的时候,回溯查询某一个id某特征的历史版本

 

原理简述:

HBase的每条数据都是带时间戳信息的,

会按rowkey,列簇,列,时间戳有序排列,默认会查询到指定的rowkey,列簇,列的最新时间戳的value

而指定查询历史N个版本,就会从最新的数据往前找N个时间戳对应的版本

 

 


快照

 

HBase可以导出快照文件,来进行离线分析

 

常见场景:

需要获取表中所有数据或者大部分数据的时候,可以通过快照方式,将截止到某一时间的数据文件导出到离线集群,来进行数据分析

 

原理简述:

数据实时写入HBase,触发快照操作的时候,实时写入的数据会落盘,落盘的文件不会再被修改,HBase内部会记录当前有哪些文件(生成引用),后续可以将快照引用对应的实际数据文件导出到Hadoop进行MR或Spark分析

 

Tips:导出文件对磁盘IO有一定压力,因此导出操作也是会进行限流的

 


 

总结

      本文介绍了HBase在特征训练数据存储方面常用的几个特性:Get,Scan,动态列,多版本,以及具体应用场景。目前在外卖、分单、语音等业务中都有一定的应用。希望对大家进一步了解和使用HBase有所帮助。

 

 

 

 

 

 

 

 

 

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
用户画像作为大数据的根基,它抽象出一个用户的信息全貌,为进一步精准、快速地分析用户行为习惯、消费习惯等重要信息,提供了足够的数据基础,奠定了大数据时代的基石。 用户画像,即用户信息标签化,就是企业通过收集与分析消费者社会属性、生活习惯、消费行为等主要信息的数据之后,抽象出一个用户的商业全貌作是企业应用大数据技术的基本方式。用户画像为企业提供了足够的信息基础,能够帮助企业快速找到精准用户群体以及用户需求等更为广泛的反馈信息。 用户画像系统能很好地帮助企业分析用户的行为与消费习惯,可以预测商品的发展的趋势,提高产品质量,同时提高用户满意度。构建一个用户画像,包括数据源端数据收集、数据预处理、行为建模、构建用户画像。有些标签是可以直接获取到的,有些标签需要通过数据挖掘分析到!本套课程会带着你一步一步的实现用户画像案例,掌握了本套课程内容,可以让你感受到Flink+ClickHouse技术架构的强大和大数据应用的广泛性。 在这个数据爆发的时代,像大型电商的数据量达到百亿级别,我们往往无法对海量的明细数据进一步层次的预聚合,大量的业务数据都是好几亿数据关联,并且我们需要聚合结果能在秒级返回。 包括我们的画像数据,也是有这方便的需求,那怎么才能达到秒级返回呢?ClickHouse正好满足我们的需求,它是非常的强大的。 本课程采用Flink+ClickHouse技术架构实现我们的画像系统,通过学习完本课程可以节省你摸索的时间,节省企业成本,提高企业开发效率。希望本课程对一些企业开发人员和对新技术栈有兴趣的伙伴有所帮助,如对我录制的教程内容有建议请及时交流。项目采用到的算法包含Logistic Regression、Kmeans、TF-IDF等,Flink暂时支持的算法比较少,对于以上算法,本课程将带大家用Flink实现,并且结合真实场景,学完即用。系统包含所有终端的数据(移动端、PC端、小程序端),支持亿级数据量的分析和查询,并且是实时和近实时的对用户进行画像计算。本课程包含的画像指标包含:概况趋势,基础属性,行为特征,兴趣爱好,风险特征,消费特征,营销敏感度,用户标签信息,用户群里,商品关键字等几大指标模块,每个指标都会带大家实现。课程所涵盖的知识点包括:开发工具为:IDEA FlinkClickhouseHadoopHbaseKafkaCanalbinlogSpringBootSpringCloudHDFSVue.jsNode.jsElemntUIEcharts等等 课程亮点: 1.企业级实战、真实工业界产品 2.ClickHouse高性能列式存储数据库 3.提供原始日志数据进行效果检测 4.Flink join企业级实战演练 5.第四代计算引擎Flink+ClickHouse技术架构6.微服务架构技术SpringBoot+SpringCloud技术架构7.算法处理包含Logistic Regression、Kmeans、TF-IDF等8.数据库实时同步落地方案实操9.统计终端的数据(移动端、PC端、小程序端) 10.支撑亿级海量数据的用户画像平台11.实时和近实时的对用户进行画像计算12.后端+大数据技术栈+前端可视化13.提供技术落地指导支持 14.课程凝聚讲师多年实战经验,经验直接复制15.掌握全部内容能独立进行大数据用户平台的设计和实操企业一线架构师讲授,代码在老师的指导下企业可以复用,提供企业解决方案。  版权归作者所有,盗版将进行法律维权。 

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值