IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> 用户画像标签数据存储之Elasticsearch存储 -> 正文阅读

[大数据]用户画像标签数据存储之Elasticsearch存储

目录

0. 相关文章链接

1.?Elasticsearch简介

2. 应用场景

3. 工程化案例

4. 用户画像标签数据存储总结


注:此博文为根据 赵宏田 老师的 用户画像·方法论与工程化解决方案 一书读后笔记而来,仅供学习使用

0. 相关文章链接

用户画像文章汇总

1.?Elasticsearch简介

????????Elasticsearch是一个开源的分布式全文检索引擎,可以近乎实时地存储、检索数据。而且可扩展性很好,可以扩展到上百台服务器, 处理PB级别的数据。对于用户标签查询、用户人群计算、用户群多维 透视分析这类对叩应时间要求较高的场景,也可以考虑选用 Elasticsearch进行存储。

????????Elasticsearch是面向文档型数据库,一条数据在这里就是一个文 档,用json作为文档格式。为了更清晰地理解Elasticsearch查询的一 些概念,将其和关系数据库的类型进行对照,如下图所示。

????????在关系型数据库中查询数据时可通过选中数据库、表、行、列来 定位所查找的内容,在Elasticsearch中通过索引(index)、类型 (type)、文档(document)、字段来定位查找内容。一个Elasticsearch集群可以包括多个索引(数据库),也就是说,其中包 含了很多类型(表),这些类型中包含了很多的文档(行),然后每 个文档中又包含了很多的字段(列).Elasticsearch的交互可以使用 Java API,也可以使用HTTP的RESTful API方式。

2. 应用场景

????????基于HBase的存储方案并没有解决数据的高效检索问题。在实际应用中,经常有根据特定的几个字段进行组合后检索的应用场景,而 HBase采用rowkey作为一级索引,不支持多条件查询,如果要对库里的 非rowkey进行数据检索和查询,往往需要通过MapReduce等分布式框架 进行计算,时间延迟上会比较高,难以同时满足用户对于复杂条件查 询和高效率响应这两方面的需求。

????????为了既能支持对数据的高效查询,同时也能支持通过条件筛选进 行复杂查询,需要在HBase上构建二级索引,以满足对应的需要。我们可以采用Elasticsearch存储HBase的索引信息,以支持复杂高效的查询功能。

主要查询过程包括:
1)在Elasticsearch中存放用于检索条件的数据,并将rowkey也 存储进去;
2)使用Elasticsearch的API根据组合标签的条件查询出rowkey的 集合;
3)使用上一步得到的rowkey去HBase数据库查询对应的结果(如下图);

? ? ? ? HBase数据存储数据的索引放在Elasticsearch中,实现了数据和 索引的分离。在Elasticsearch中documentid是文档的唯一标识,在 HBase中rowkey是记出的唯一标识。在工程实践中,两者可同时选用用 户在平台上的唯一标识(如userid或deviceid)作为rowkey或 documentid,进而解决HBase和Elasticsearch索引关联的问题。

????????下面通过使用Elasticsearch解决用户人群计算和分析应用场景的 案例来了解这一过程。

????????对汇聚后的用户标签表?dw.userprofile_userlabel_map_all中的数据进行清洗, 过滤掉一些无效字符,达到导入Elasticsearch的条件,如下图所示。

然后将dw.userprofile_userlabel_map_all数据写入 Elasticsearch中,之后需要数据就可以直接从Elasticsearch中获取数据了,对比使用Impala从Hive中进行计算,效果可以从原先的几十秒到几分钟优化到现在的秒级响应。

3. 工程化案例

????????下面通过一个工程案例来讲解实现画像产品中“用户人 群”和“人群分析”功能对用户群计算秒级响应的一种解决方案。

????????在每天的ETL调度中,需要将Hive计算的标签数据导入 Elasticsearch中。如图3-28所示,在标签调度完成且通过校验后(如下图中的“标签监控预警”任务执行完成后),将标签数据同步到 Elasticsearch中。

????????在与Elasticsearch数据同步完成并通过校验后,向在MySQL中维 护的状态表中插入一条状态记录,表示当前日期的Elasticsearch数据 可用,线上计算用户人群的接口则读取最近日期对应的数据。如果某 天因为调度延迟等方面的原因,没有及时将当日数据导入 Elasticsearch中,接口也能读取最近一天对应的数据,是一种可行的灾备方案。

????????例如,数据同步完成后向MySQL状态表“elasticsearch_state”中插入记录(如下图所示),当日数据产出正常时,state字段为“0”,产出异常时为“1”。图3-29中1月 20日导入的数据出现异常,则“state”状态字段置1,线上接口扫描 该状态记录位后不读取1月20日数据,而是取用最近的1月19日数据。

????????为了避免从Hive向Elasticsearch中灌入数据时发生数据缺失,在向状态表更新状态位前需要校验Elasticsearch和Hive中的数据量是否 一致。还需要通过其他脚本来看数据校验逻辑:

????????如上所示就是在工程化调度流中何时将Hive中的用户标签数据灌入 Elasticsearch中,之后业务人员在画像产品端计算人群或透视分析人群时(如下图1所示),通过RESTful API访问Elasticsearch进行计算(如下图2所示)。

图1

图2

4. 用户画像标签数据存储总结

在前面的几篇博文中讲解了使用Hive、MySQL、HBase和Elasticsearch存储标签数 据的解决方案,包括:Hive存储数据相关标签表、人群计算表的表结 构设计以及ID-Mapping的一种实现方式;MySQL存储标签元数据、监控 数据及结果集数据;HBase存储线上接口实时调用的数据; Elasticsearch存储标签用于人群计算和人群多维透视分析。存储过程 中涉及如下相关表。

  • dw.userprofile_attritube_all:存储人口属性维度的标签 表;
  • dw.userprofile_action_all:存储行为属性维度的标签表;
  • dw.userprofile_consume_all:存储用户消费维度的标签表;
  • dw.userprofile_riskmanage_all:存储风险控制维度的标签 表;
  • dw.userprofile_social_all:存储社交属性维度的标签表;
  • dw.userprofile_userlabel_map_all:汇聚用户各维度标签的 表;
  • dw.userprofile_usergroup_labels_all:存储计算后人群数据 的表。

面向不同的工程场景使用不同的存储方案,本章通过“工程场景 +案例”的形式介绍了一种可实现的用户标签存储解决方案。


注:再次声明,此博文为根据?赵宏田?老师的?用户画像·方法论与工程化解决方案?一书读后笔记而来,仅供学习使用

注:其他相关文章链接由此进 ->?用户画像文章汇总


  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-01-24 10:57:59  更:2022-01-24 10:58:38 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年10日历 -2024/10/25 5:26:41-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码