本模块是用户画像的核心:主要负责 根据原始数据以及标签规则进行相应的计算,比如规则匹配/统计/挖掘等相关操作,最终得到标签结果,将结果存入HBase中。
从上述图中可以分析出,每个标签模型计算时与存储系统交互:
- 1)、加载MySQL表的数据
- 读取标签的规则
- 2)、加载HBase表的数据
- 读取业务数据,比如用户基本信息数据、订单数据等
- 3)、保存标签数据至HBase表
- 将每个用户标签数据保存到HBase中
如上图标签模型开发,包含四个步骤:
1)、加载标签数据,获取标签规则rule
- 每个业务标签都有规则,表示此标签计算时业务数据存储的地方(业务数据数据源),比如存储HBase表中
2)、加载业务数据
- 给用户打标签,需要获取标签的值,从业务数据中获取,比如性别标签,性别信息gender存储tbl_tag_users
3)、打标签
- 结合属性标签数据和业务数据,给用户打上标签的值:使用标签的标识符标注TagId要使用属性标签中标签规则rule
4)、保存用户标签数据
- 将标签数据保存至HBase表中:tbl_profile
- RowKey: userId
- ColumnFamily: user,item
- Columns:
- userId: 10001
- tagIds: 345,387,…
针对上述各个模块的描述,如何对具体业务标签进行开发模型(前端和后台)集成,相关流程说明如下。
2.1、提交流程搭建一个用户画像的管理平台,在这个平台上,可以按照不同的等级去管理标签或者定义标签的执行周期,以及计算任务的提交等等操作。
一个标签(业务标签、4级标签)对应一个模型,一个模型就是一个Spark Application程序。
一个完整的任务提交流程,如上图所示,需要先创建出 1、2、3级标签 、再创建 4级标签的时候将任务的Jar包上传、以及指定运行参数、最后创建5级标签,之后就可以开始运行模型任务。
在新建业务标签和属性标签时,有个标签字段:标签规则【rule】
- 1)、如果是业务标签(4级标签)
- rule字段:业务标签的数据源,构建此标签时,从哪里读取数据业务数据,构建标签
- inType表示:
- 比如从MySQL数据库读取数据,值就是mysql;
- 比如从HBase表读取数据,值就是hbase;
- 比如从Hive表读取数据,值就是hive;
- …
- 2)、如果是属性标签(5级标签)
- rule字段:表示的是属性标签的规则,如果业务标签为规则匹配类型标签,此时借助rule值, 进行规则匹配,计算模型标签。
当某个业务标签的模型任务提交后的具体执行流程又是怎样的呢?如何才能得到最终计算的标签结果? 任务在执行的时候,数据获取有2部分:
1)、MySQL中的标签规则数据
2)、HBase中的原始数据(业务数据)
通过SparkSQL对数据进行计算(DataFrame DSL编程),将最终得到的结果标签存入HBase,再用Elasticsearch或者Solr做二级索引,方便进行数据的查询操作。
标签数据存储HBase表中:
- tbl_profile
- RowKey:userId
- ColumnFamily: user, item
- user列簇下标签:面向注册会员的偏好、行为习惯和 人口属性的画像还原
- item列簇下标签:对商品信息的画像还原
- 此处以用户标签为准:
- user:userId,存储用户的ID
- user:gender, 存储具体标签的值,如性别标签值:男或女