| |
|
开发:
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简介????????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的索引信息,以支持复杂高效的查询功能。
? ? ? ? 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所示)。 4. 用户画像标签数据存储总结
注:再次声明,此博文为根据?赵宏田?老师的?用户画像·方法论与工程化解决方案?一书读后笔记而来,仅供学习使用 注:其他相关文章链接由此进 ->?用户画像文章汇总 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
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年11日历 | -2024/11/24 15:02:05- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |