Doris画像存储实践系列二

上一篇:
Doris画像存储系列一(https://editor.csdn.net/md/?articleId=120416295)

六、画像宽表+bitmap倒排表

重复一下bitmap倒排表的优点和缺点
标签类型标签值user_ids
性别1,2
性别3
优点:
  1. doris bitmap聚合表在对做用户画像群体计算时很友好,交集/并集/差集
  2. 因为数据是聚合存储,因此数据量少,性能也特别好
缺点:
  1. 当我希望分页查询用户画像/自定义画像字段排序时特别麻烦
  2. 当我希望做流式计算做实时标签时,无法按照单个用户进行标签的删改
因此目前又有了一个新的技术方案:

“画像宽表” + bitmap倒排表方案,在方案五的时候使用的是"画像窄表"+bitmap倒排表方案,因为早期Doris只能支持整行更新,而无法实现某表某列的单独操作,现在呢已经可以实现了,具体方案如下:

通过doris聚合模型+REPLACE_IF_NOT_NULL 聚合函数实现

表创建结构如下
CREATE TABLE `tdm_user_tag` (`user_id` int(11) NULL COMMENT '用户ID',`sex` varchar(20) REPLACE_IF_NOT_NULL NULL COMMENT '性别',`age` varchar(20) REPLACE_IF_NOT_NULL NULL COMMENT '年龄段',`id_number` int(11) REPLACE_IF_NOT_NULL NULL COMMENT '身份证号'
) ENGINE = OLAP AGGREGATE KEY(`user_id`) COMMENT '用户标签表' DISTRIBUTED BY HASH(`month`) BUCKETS 8 PROPERTIES ("replication_allocation" = "tag.location.default: 3","in_memory" = "false","storage_format" = "V2","disable_auto_compaction" = "false"
);
标签数据操作如下:
insert into tdm_user_tag(user_id,sex)values("1","男")("2","女");
insert into tdm_user_tag(user_id,age)values("1","90后");
insert into tdm_user_tag(user_id,id_number)values("1","1111111");
insert into tdm_user_tag(user_id,likes)values("1","钓鱼,看戏");
数据结果如下:
idsexageid_numberlikes
190后1111111钓鱼,看戏
2
说明:
  1. REPLACE_IF_NOT_NULL聚合函数,能够实现插入时忽略空值,也就可以实现一次操作某一列数据,也因为每个画像值的计算逻辑是不同的,所以也就和上面的例子一样,一条SQL对应一个画像,一个画像对应一个计算逻辑,一次操作一列数据
  2. 基于这样的宽表数据,实现排序,分页,自定义组合检索都是非常好的
  3. 同时也兼顾了类似于身份证号类别不适合定义为标签的字段
  4. 补充一点说明,有的画像是多值的,在上面的例子中使用逗号分隔多个标签值,Doris提供函数find_in_set函数,能够匹配出是否包含某个画像值,如:
-- 查看命中"看戏"爱好的人有哪些
select * from tdm_user_tag where find_in_set("看戏",likes) > 0
  1. 到目前为止,doris依然对单条插入不友好和推荐,上面只是例子表示可以实现某一例的操作,正常应该是批量操作的,如:
-- 通过用户表的信息生成画像信息
insert into tdm_user_tag(user_id,sex) select user_id,sex from user_info
  1. 一般数据量不大的情况下,只需要"画像宽表"就可以了,如果涉及大量的如画像群体的交并集查询等操作,此时再建立"bitmap倒排表"不迟,定时将"画像宽表"数据写入到"bitmap倒排表"

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/729698.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SQL23 统计每个学校各难度的用户平均刷题数

题解 | #统计每个学校各难度的用户平均刷题数# 题意明确: 计算每个学校用户不同难度下的用户平均答题题目数 问题分解: 限定条件:无;每个学校:按学校分组group by university不同难度:按难度分组group b…

Hack The Box-Crafty

目录 信息收集 rustscan whatweb WEB 漏洞利用 漏洞说明 漏洞验证 提权 get user.txt get Administrator 总结 信息收集 rustscan ┌──(root㉿ru)-[~/kali/hackthebox] └─# rustscan -a 10.10.11.249 --range0-65535 --ulimit5000 -- -A -sC [~] Automatically…

NLP:自定义模型训练

书接上文,为了完成指定的任务,我们需要额外训练一个特定场景的模型 这里主要参考了这篇博客:大佬的博客 我这里就主要讲一下我根据这位大佬的博客一步一步写下时,遇到的问题: 文中的cfg在哪里下载? 要不…

Fastjson漏洞利用合集

0x01 Fastjson 概述 1.应用场景 接口返回数据 Ajax异步访问数据RPC远程调用前后端分离后端返回的数据开放API(一些公司开放接口的时候,我们点击请求,返回的数据是JSON格式的)企业间合作接口(数据对接的时候定义的一种规范,确定入参&#x…

BUUCTF-MISC-[HDCTF2019]信号分析1

题目链接:BUUCTF在线评测 (buuoj.cn) 下载附件是一个WAV的文件,题目又叫做信号分析,用Adobe Audition 打开分析了 发现有很多长短不一样的信号,只需要分析一段 猜测长的是一短的为0 最后得到0101010101010101000000110 百度得知…

vscode如何远程到linux python venv虚拟环境开发?(python虚拟环境、vscode远程开发、vscode远程连接)

文章目录 1. 安装VSCode2. 安装扩展插件3. 配置SSH连接4. 输入用户名和密码5. 打开远程文件夹6. 创建/选择Python虚拟环境7. 安装Python插件 Visual Studio Code (VSCode) 提供了一种称为 Remote Development 的功能,允许用户在远程系统、容器或甚至 Windows 子系统…

【致逝去的青春】《龙珠》作者鸟山明逝世,享年68岁

鸟山明工作室(BIRD STUDIO)于3月8日发布讣告:鸟山明已于2024年3月1日因急性硬膜下血肿逝世,享年68岁。 《龙珠》从 1984 年开始于《周刊少年Jump》连载,过后曾改编曾多部动画、剧场版、游戏,相关周边商品也…

opengl 学习(二)-----你好,三角形

你好&#xff0c;三角形 分类demo效果解析 分类 opengl c demo #include "glad/glad.h" #include "glfw3.h" #include <iostream> #include <cmath> #include <vector>using namespace std;/** * 在学习此节之前&#xff0c;建议将这…

Alveo 概念拓扑结构

在 Alveo 加速卡中,涉及到的概念拓扑结构主要包括 Alveo 卡上的各个关键组件以及与主机系统之间的通信结构。以下是对这些概念拓扑结构的简要介绍: 1.DDR 即双数据率内存(Double Data Rate memory),是一种常见的计算机内存类型,用于存储和提供处理器所需的数据和指令。…

macos m1 arm芯片 使用jpype报错 FileNotFoundError: [Errno 2] JVM DLL not found

startJVM(jpype.getDefaultJVMPath()) 报错 Traceback (most recent call last):File "/Users/thomas990p/PycharmProjects/tuya/volcano-biz-scripts/WenKongFa/FinalCode/java2python/CallJavaAPI.py", line 12, in <module>startJVM(jpype.getDefaultJVMPa…

基于springboot实现大学生兼职网站系统项目【项目源码+论文说明】计算机毕业设计

基于springboot实现大学生兼职系统演示 摘要 现代化的市场中&#xff0c;人们日常的工作、生活都在不断的提速&#xff0c;而人们在工作与生活中与互联网的结合也越来越紧密&#xff0c;通过与互联网紧密的结合可以更好地实现日常工作的线上化、信息化、便捷化。现如今的各行各…

ebpf入门---监听所有新进程

什么是ebpf eBPF 全称 extended Berkeley Packet Filter&#xff0c;中文意思是 扩展的伯克利包过滤器。一般来说&#xff0c;要向内核添加新功能&#xff0c;需要修改内核源代码或者编写 内核模块 来实现。而 eBPF 允许程序在不修改内核源代码&#xff0c;或添加额外的内核模…

私域流量怎样运营?建议你使用“5步推进法”!

私域“五步推进法”是一种确保客户添加上线工作有效进行的策略。 第一步&#xff0c;树标杆。我们需要在企业内部筛选出客户添加数量较多的区域和员工&#xff0c;将其塑造为榜样&#xff0c;并发挥其示范作用。如果企业在全国范围内拥有多家门店&#xff0c;可从不同的省份或…

鸿蒙App基础

像素单位 .1、基础单位 为开发者提供4种像素单位&#xff0c;框架采用vp为基准数据单位。 PS&#xff1a;个人建议使用lpx&#xff0c;配置好配置文件&#xff0c;这里就可以按照UI设计稿实际的来&#xff0c;可以更好的实现设计效果 名称描述px屏幕物理像素单位vp屏幕密度相…

一拖二快充线独特优势

在现代社会&#xff0c;手机已成为我们生活中不可或缺的一部分。随着科技的不断进步&#xff0c;手机的功能越来越强大&#xff0c;从通讯工具逐渐转变为工作、学习和娱乐的得力助手。然而&#xff0c;手机的电量问题一直是困扰着我们的难题。为了解决这个问题&#xff0c;市场…

在Linux/Ubuntu/Debian上将富文本Markdown (`.md`) 文件转换为HTML

你可以使用Pandoc将 Markdown (.md) 文件转换为 HTML。如果你没有安装 Pandoc&#xff0c;可以使用以下步骤安装&#xff1a; 打开终端。 运行以下命令安装 Pandoc&#xff1a; sudo apt-get update sudo apt-get install pandoc安装 Pandoc 后&#xff0c;你可以使用它将 Mar…

Lua调用c++函数的两种办法

使用Lua5.1.5进行的操作 方法一: lua调用应用程序中的函数 lua脚本,调用应用程序中的计算平均值的函数 script.lua number,sum,avg = average(10,20,30,40,50); print("The number is ", number

LLDB-调试

远程调试Android Device Android端启动lldb server 在此之前将lldb server push到设备&#xff0c;如/data/loca/tmp lldb-server platform \ --server --listen unix-abstract:///data/local/tmp/debug.sock后台运行&#xff1a; lldb-server platform \ --server --listen …

【树】-Lc617-合并二叉树(同时递归2棵树)

写在前面 最近想复习一下数据结构与算法相关的内容&#xff0c;找一些题来做一做。如有更好思路&#xff0c;欢迎指正。 目录 写在前面一、场景描述二、具体步骤1.环境说明2.代码 写在后面 一、场景描述 合并二叉树。将它们中的一个覆盖到另一个上时&#xff0c;两个二叉树的一…

3•8向女同胞致敬|营销枢纽SaaS厂商乐通达(ltd.com)正式更名枢纽云

为了向女同胞致敬&#xff0c;我们特地选择3月8日女神节变更公司名称&#xff0c;因为《如果SaaS有性别&#xff0c;那 TA一定是女性 》。 2024年3月8日&#xff0c;“杭州乐通达网络有限公司”名称正式变更为“杭州枢纽云计算有限公司”&#xff08;简称&#xff1a;营销枢纽&…