自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(361)
  • 资源 (1)
  • 收藏
  • 关注

原创 从0到1介绍一下开源大数据服务平台dataService

在大数据领域也已经工作了多年,无论所待过的大公司还是小公司,统计出来的数据经常需要查询展示,比如说:用做大屏或者报表或者给一些线上服务提供数据源,经常会要用代码写一套接口服务,需要进行开发-测试-上线等一套流程,开发效率非常低下,导致开发一个服务需要接近0.5天或者1天的时间。(2)为了满足不同的数据量要求,选择不同的数据存储,因此导致数据存储多样性(比如:Mysql、Oracle、Hbase、Doris等等),所以针对不同的存储开发代码不一致。(3)接口服务不规范,不同的开发人员,对于接口开发不一致。

2023-01-29 13:57:11 5082 10

原创 从0到1介绍一下开源大数据比对平台dataCompare

在大数据领域也已经工作了多年,无论所待过的大公司还是小公司,都会遇到集群升级迁移过程中据搬迁等相关工作,经常会碰到搬迁之后,搬迁的数据是不是能对的上呢?两边数据究竟是不是一致的呢?如果不一致,那又有哪些差异呢?能不能更快地找到差异解决问题呢?

2022-12-21 11:02:19 4301 2

原创 用户画像系列——布隆过滤器在策略引擎中的应用

比如:当某个用户第一次进入某个平台,会给你弹窗有什么优惠,新用户优惠券等等;或者某个用户消费金额极高,达到一个阈值,认为该用户有极大的消费能力,可以开放奢侈品入口,即:淘宝上的奢侈品频道是根据之前有消费过奢侈品、且高价值的用户才开放的。这篇文章分享的是用户画像在策略引擎中的应用。首先来了解下策略引擎是干什么的?根据用户标签命中不同的策略,比如说:高消费人员有奢侈品入口通道。通过用户标签给用户推荐合适的商品或者内容。

2022-11-15 18:10:24 481 2

原创 用户画像系列——Lookalike在营销圈选扩量中的应用

比如说:发现圈选的目标用户5000里面,有很多相似的地方,喜欢美妆对于满减活动也比较敏感,然后平台里面10w 用户也有不少男性用户虽然年龄超过30岁了,但是对于美妆也非常感兴趣(可能是给女朋友买?上文中提到的5000个用户称呼为“种子用户”,平台用户10w称之为所有用户(DMP用户),然后我们扩充出来的3w用户称之为“相似用户”或者"扩展用户"(5)根据种子用户关联用户向量特征得到可以匹配上的用户的向量特征,种子用户id,种子用户向量。根据用户标签命中不同的策略,比如说:高消费人员有奢侈品入口通道。

2022-11-08 14:52:35 723

原创 用户画像系列——推荐相关核心标签(偏好类)

我们经常在逛购物网站或者刷抖音、听网易云音乐的时候,会有猜你喜欢或者为你推荐这样一个功能,而这依赖的就是用户画像的偏好类标签:比如说明星偏好(喜欢某个明星或者歌手的作品)、类型偏好(比如说:喜欢美妆类、喜欢美食类)

2022-10-19 15:57:02 6117 3

原创 离线表数据敏感字段自动id化处理

对于一些表数据包含的铭感字段需要id 化处理,比如说:用户搜索了某个关键词,或者用户的购物地址是某个城市,这种都需要进行模糊化处理,但是直接模糊化处理不利于使用,比如说:在三四线城市(村镇收货地址)的用户可能是下沉用户,或者搜索过美妆相关的关键词用户认为大概率是女性用户,但是这种又不太方便对外进行展示,所以需要进行id化。核心思路:用字典表和地址信息表进行关联,自动生成新的字典表,然后拿字典表和地址信息表进行匹配实现位置信息id化。认为地址位置id 为3和4的用户其实有非常相似的特征的。

2022-10-12 19:06:09 247

原创 用户画像系列—如何从0到1建设用户画像

我们讲到用户画像其实就是用户的标签或者特征,首先要明确就是要完成标签的生产和加工,那么涉及到的内容就包括数据的接入、清洗、和最后标签的加工入库。热数据考虑用更好的硬件设备进行存储(SSD、独立集群等)、冷数据考虑用一般的硬件设备进行存储(HHD、公共集群)标签字典:标签内容数据只存储字典枚举,而不实际存储实际内容(比如:性别标签男女存储为0、1)标签质量:对于标签的数据质量进行监控、波动告警,包含:标签的覆盖率、标签分布的监控告警。(4)标签权限管控、标签字典、标签质量。

2022-08-24 19:47:11 766

原创 开源大数据比对平台设计与实践—dataCompare

在大数数据开发过程中,经常会遇到数据迁移或者升级的工作,或者不同的业务方根据需求加工了一下数据,但是认为两边的数据还是一样,因此会出现需要去手动比对数据。根据以往的工作经历,开发了一个大数据比对平台,用来辅助验证数据,命名为dataCompare。如果没有平台的话,需要手动写一些SQL脚本进行去比对的,而且也没有一个评估标准。(1)采用界面交互、勾选的方式或者低代码的方式即可实现自动化数据校验对比。(3)一套统一的数据验证方案,达到数据校验比对的标准规范。(1)验证数据、数据比对,浪费极大的人力成本。...

2022-08-01 20:11:42 1630 4

原创 用户画像系列——当我们聊用户画像,我们在聊什么?

市面上不少公司都在做用户画像的相关工作,无论是电商行业、金融行业、视频行业等等,都有这样的产品。那到底怎么去定义用户画像呢?用户画像,即:用标签的方式去描述一个人或者一台手机、一台电脑,有些公司称之为”用户画像“,有一些公司称之为”用户特征“,其实是一个意思。举个简单的例子:袁小青,性别:女,年龄:22岁,职业:时尚编辑,爱好:音乐、拍照,居住地:北京,消费情况:年薪10w,喜欢的app:抖音从上面的例子,能看出来其实就是把用户进行标签化比如说:电商场景,对于使用当前进行购物的账号(当然也有可能帮别人购买)

2022-06-29 16:36:22 468

原创 亿级数据如何分钟级别写入缓存?

1.背景在做用户画像的过程中经常会遇到,需要将用户数据入缓存的需求,提供给线上服务进行调用,因为最终加工的画像数据普遍会存储在离线表(Hive)或者一些其他存储中(HDFS、Doris 等等)但是这类数据存储的特点非常明显适合一些内部运营系统做数据分析,但是用来做线上系统的高QPS、低延迟的服务,显然是不能满足的。因此就必须将画像数据写入到redis 这种类似的分布式缓存当中。那么如此大量的数据(亿级),如何能更快地写入到缓存当中呢?2.系统架构设计(1)利用Spark rdd 多分区的方式来进行并行写入缓

2022-06-27 20:23:12 781

原创 在高并发环境下,再次认识java 锁

线上部署的应用,偶尔会出现,数据读取出来为空的情况,但是通过打印日志,发现数据确实是存在的。日志文件: 对应代码:tagId2NameMap 是通过一个定时任务去更新的,即:updateTagIdMapping 函数,本来 tagId2NameMap 是HashMap,以为是不安全的原因导致的,改为ConcurrentHashMap(1)改为ConcurrentHashMap,还是会出现一样的问题增加日志,发现是在发生updateTagIdMapping 更新时间和 getTagName 函数时间非常接近的

2022-06-21 20:21:59 223

原创 用户画像系列——数据中台之OneID (ID-Mapping)核心架构设计

一.引言大家在上网的过程中是不是经常有这样的体验,我在百度(或者京东、淘宝)上搜索一件商品(比如说:我搜索了一台iphone 手机看了看,但是没买),奇怪的是过两天,我竟然在某视频平台或者某网页上又看到了它?而且更加奇怪的是,我明明是在电脑pc 端搜索的手机,但是我在手机上看电影的时候却能看到它,是不是也太奇怪了。难道我的电脑、我的手机、我的ipad 等等电子设备都被监控了吗?二、背景《阿里巴巴大数据之路》中有讲到关于数据中台OneData 的方法论,其中分别涉及到OneModel、

2022-03-08 14:01:54 10629

原创 某互联网大厂亿级大数据服务平台的建设和实践

一、引言:在大数据建设过程中,通用的建设思路:从数据埋点——数据采集——数据清洗(ETL)——数据服务——数据可视化。整体流程可参考下图:这篇文章主要想和大家聊聊的是,数据服务平台的建设。二、背景:由于数据加工完成的数据,需要给不同的应用和产品提供服务,包含:数据产品、实时大屏、线上应用、BI自主分析。由于业务场景不同,在根据不同的场景下选择的数据存储也多种多样,图中罗列:Hive、Mysql、Hbase、CK、redis、TiDB等等。最后产生的调用服务也多种多样。如下一.

2021-08-13 10:07:06 2976 6

原创 京东实时计算架构演进之路

一、背景:从2004年开始,京东进军互联网线上化开始到至今,随着京东的高速发展,京东商城的订单量从万级到百万级、最终到达亿级。而对于实时的数据需求也是层出不穷,实时计算架构随着数据量的增长,不断进行革新。**二、京东实时计算架构演进之路**(1)订单量万级、百万级(以京东海外站为例)在订单量万级、百万级别的时候,也存在不少实时的数据需求,比如:商家需要看看自己每天的成交量、老板需要看看整体的成交金额,以为后续的融资做准备。类似于现在很多的a、b轮创业公司数据体量。解决方案:而此时为了节省更少的

2020-03-26 18:49:48 1116

原创 用户购物行为分析(订单路径树)

1.订单路径树的定义用户从打开某网站到最终下单所点击的路径为订单路径树。比如:打开某电商app或者网站到最终下单的路径,大部分用户的路径为:(1)主页-搜索页-商详页-加购-下单(搜索下单路径)(2)首页-列表页-商详页-加工-下单(列表页下单路径) (3)当然用户也可以进行其他的无规则的点击,最终加购下单,都会生成用户从点击到购买的路径行为。2.订...

2019-11-13 11:07:14 2841 3

原创 京东618实时数据大屏核心技术解密

本文讲述了京东618实时数据大屏,从用户下单到最终大屏指标计算,呈现给用户。对当中整个流程进行了详细的阐述,以及在开发过程中遇到的问题也进行详细的描述。希望能给搭建大屏的读者提供一个思路。作者简介:诸葛子房,曾供职于京东,现就职于BAT,在大数据领域有多年实践经验,欢迎加微信:zhugezifang001 交流。

2019-08-15 19:10:06 2651

原创 AI时代,我靠2个页面,一个AI产品开始变现

后端主要就是java、springboot,当然后来也试过写过一个Python版本的,基于flask,整体来说的话并没有太大区别(主要还是我Python也没那么熟写的不多但是没太大影响),虽然很多大模型都主要提供的Python版本的api,我是用阿里开发的idea上的代码插件转换成java的,所以其实还好,不过还是建议大家用Python的比较好,因为现在确实很多大模型确实提供的Python方式更多一些。这个只是我的一点建议。AI时间线在我没上域名的时候,进行了一波宣传,达到流量过千,后续就比较平稳了。

2024-03-21 11:43:01 1228

原创 AI工具使用指南

kimi ai:擅长长文本解读。

2024-02-14 16:37:13 352

原创 用户画像系列——在线服务调优实践

从调优来看,虽然能通过增大机器资源4c 8g——8c 16g,同时通过调整jvm参数让full gc 能够达到一周一次,但是对于接口波动还是存在问题,主要原因就是某些id对应的value值较大,所以读取和解析耗时严重,因此最终方案应该考虑去对value进行拆分存储,避免一次性取出来过大的数据,将常用数据和非常用数据进行拆分。推荐场景:根据不同的用户推荐不同的内容,做到个性化推荐,需要读取画像的一些偏好数据,推荐感兴趣的内容。最终优化之后,full gc 维持在1周一次,但是仍然有接口耗时毛刺。

2024-01-23 17:16:46 1101

原创 开源项目datavines内存泄漏问题分析

通过jdk自带工具,jvisualvm.exe(在安装jdk8/bin目录下)添加JMX连接,即可看到如下界面。

2023-11-15 13:01:24 319

原创 KnowStreaming系列教程第四篇——MySQL数据更新死锁问题

这样做的原因是:整体代码实现逻辑上比较简单,没有引入一些复杂的东西。缺点是会损耗一些性能,但是也有一定的优化空间,比如如果发现数据没有变化,可以直接不进行updateById。这块解决的思路是:在代码中,查询已有的数据。如果数据已存在,就执行updateById的操作,如果不存在,就执行insert的操作。insert操作时,忽略key冲突的异常。主要原因是调度任务并行执行,更新数据的时候存在更新相同行的数据引起的死锁。

2023-11-06 14:46:02 149

原创 新一代数据质量平台datavines

缺点:部署依赖非常多,ElasticSearch、Hadoop、Livy、Spark等,离线处理主要依赖spark、实时处理主要以将流转成微批,采用Spark Streaming为主,技术栈 java、scala 前端 angular。横向可扩展功能较差、作业容错处理较差。优点:核心功能包括:数据质量监控、数据探查、数据对比,功能明细优于 Griffin;在我实习的第一家公司的时候,有幸参与Apache Griffin的开发,也先后在一起其他公司使用过数据质量平台,同时也调研过一些开源的数据质量平台。

2023-11-03 17:17:30 814

原创 Spark数据倾斜问题分析和解决

如果是sql 任务进入到 SQL 页面看到 对应的执行卡在哪里,然后分析,如下图是hash id、actor_name,可以看到是group by 数据有倾斜。group by 数据倾斜问题,可以参考hive group by 数据倾斜问题同样处理思路。首先需要掌握 Spark DAG、stage、task的相关概念。可以看到某个task 读取的数据量明显比其他task 时间较长。task数量和rdd 分区数相关。找到运行时间比较长的stage。再进去看里面的task。

2023-10-11 15:07:07 1463

原创 Apache StreamPark系列教程第二篇——项目打包和开发

默认是h2(内存数据库,项目重新启动,数据库信息丢失),因此建议修改为mysql,同时workspace路径目录也需要修改。备注:Flink SQL demo会运行一段时间之后自动结束,因为代码里面设置自动生成数据是增量数据,如果想任务一直运行。Flink Home 配置:/root/flink/flink-1.14.5 上述flink 的安装路径。修改完成之后点击release(发布作业)然后start(启动作业),任务即可启动成功。访问http://ip:10000 没问题即认为安装无误。

2023-08-24 11:00:44 1615

原创 Apache StreamPark系列教程第一篇——安装和体验

时发现从编程模型, 启动配置到运维管理都有很多可以抽象共用的地方, 我们将一些好的经验固化下来并结合业内的最佳实践, 通过不断努力终于诞生了今天的框架 ——备注:Flink SQL demo会运行一段时间之后自动结束,因为代码里面设置自动生成数据是增量数据,如果想任务一直运行。规范了项目的配置,鼓励函数式编程,定义了最佳的编程方式,提供了一系列开箱即用的。开发,可以极大降低学习成本和开发门槛, 让开发者只用关心最核心的业务,,标准化了配置、开发、测试、部署、监控、运维的整个过程, 提供了。

2023-08-23 22:43:26 2089

原创 KnowStreaming系列教程第三篇——调度任务模块

spring 根据接口或者抽象类获取子类执行: https://blog.csdn.net/u012501054/article/details/103927674。讲述了KS的整体项目目录,这边文章来讲述下KS在调度模块里面对于指标采集和元数据同步。AbstractDispatchTask 里面的execute 方法通过实现任务分配。二、调度任务分布式系统如何做到单节点运行,避免多台机器调度。通过监听集群添加事假,触发元数据同步和指标采集调度任务。一、调度模块代码主要在km-task里面。

2023-07-27 11:39:53 251

原创 KnowStreaming系列教程第二篇——项目整体架构分析

spring 根据接口或者抽象类获取子类执行: https://blog.csdn.net/u012501054/article/details/103927674。spring ApplicationEvent 使用: https://juejin.cn/post/7078481193133408270。观察者设计模式 https://www.cnblogs.com/xuwendong/p/9814417.html。(5)km-persistence:持久化,dao层,和MySQL和ES打交道。

2023-07-25 14:57:43 352

原创 KnowStreaming系列教程第一篇——安装和使用

在用户体验、监控、运维管控上进行了平台化、可视化、智能化的建设,提供一系列特色的功能,极大地方便了用户和运维人员的日常使用,让普通运维人员都能成为Kafka专家。开发文档:https://github.com/didi/KnowStreaming/blob/master/docs/dev_guide/%E6%9C%AC%E5%9C%B0%E6%BA%90%E7%A0%81%E5%90%AF%E5%8A%A8%E6%89%8B%E5%86%8C.md。三处和mysql相关的信息都得配置。

2023-07-06 15:58:47 1255

原创 Spark Driver和Executor数据传递使用问题

200MB以下才建议broadcast,太大的数据建议:两个DataFrame/rdd可以直接关联。1.首先需要理解下Driver 和Executor的概念。4.Executor端数据拉到Driver端。

2023-07-05 18:15:24 778

原创 Apache Zeppelin 番外篇——参与开源的得与失

(6)提升自己的英文能力,很多人认为英文能力不强,不能看懂英文文档,说实话,可能前期确实有些难受,看英文文档,特别是在zeppelin的英文文档,刚开始会很不适应,但是随着看多了之后,只剩少量单词不懂,然后就去使用翻译软件来解决,能看到下面关于一个pr的沟通,前后沟通了40-50次对话,全程英文,但是理解起来其实也没有那么复杂,只有少量单词不懂的时候,会去查一下,然后就是怎么去回复别人,一般也是一些简单的对话,所以整体来说,只要上过大学,对于这种沟通,我认为是完全没有问题的。

2023-06-28 16:08:35 231

原创 Apache Zeppelin系列教程第十篇——SQL Debug In Zeppelin

首先介绍下什么是SQL Debug?但是经常有这样一个需求,一大段sql 跑出来之后,发现不是自己想要的结果?demo 1:union allunion allunion alldemo 2:比如说:demo 1 中的sql 出来这样的结果数据但是其中id为100的这条数据从业务逻辑上来看应该是被过滤掉的,但是实际却出来了,也就是代码实际运行结果和我们预期想的不一样。

2023-06-15 14:53:18 1346 8

原创 Apache Zeppelin系列教程第九篇——Zeppelin NoteBook数据缓存

在使用Zeppelin JDBC Intercepter 对于Hive 数据进行查询过程中,如果遇到非常复杂的sql,查询效率是非常慢做过数据开发的同学都知道,在hive sql查询过程中,hive 会被转换为MapReduce,但是对于不是所有sql 都会有mapper和reducer 的过程,如果只是简单的查询不会涉及reducer,只有统计相关的查询会涉及到reducer,而其中的shuffle 和 reducer 是非常耗时如果有有这样一些sql。

2023-06-14 21:14:37 926

原创 Apache Zeppelin系列教程第八篇——LRU算法在Apache Zeppelin中的应用

LRU过期策略—最近最少使用概述:LRU 是 Least Recently Used 的缩写,即最近最少使用,是内存管理的一种页面置换算法。算法的核心是:如果一个数据在最近一段时间内没有被访问到,那么它在将来被访问的可能性也很小。换言之,当内存达到极限时,应该把内存中最久没有被访问的数据淘汰掉。那么,如何表示这个最久呢?

2023-06-14 10:18:43 202

原创 打跑个人开源转角的“拦路虎”——我的开源之路

e.如何保保障开源项目的可持续性,在这方面我目前尝试的是小步迭代的方式,首先完成dataCompare的核心功能,然后进行推广,后续发现有一些用户和企业在尝试或者一些需求之后再跟进反馈进行完善,同时构建一个项目的社区或者社群能够更快地了解用户的使用情况,以此来达到项目的可持续性。c.再就是撰写产品使用文档,这部分由于经常写博客、做总结,其实还算马马虎虎,写的文档别人能看懂,其后再根据一些使用用户的反馈完善文档中不太全面的地方,这样的话就能保证写出来的使用文档,其他人入手项目的时候无障碍。

2023-06-01 17:28:54 2254 9

原创 Hadoop任务scan Hbase 导出数据量变小分析

在main 函数里面读取mysql配置信息,然后通过参数的方式传递给mapper,避免每次mapper 都进行读mysql 取配置 信息。一个MR任务scan hbase 导出hive 文件,但是发现某些天数据突然变小,而且里面数据行数也变小(hbase里面的数据只增不减)日志非常隐蔽,需要去MR 任务里面看 mapper 里面的log 日志,发现有error 日志,进一步定位。发现有mysql 连接数过多,可以看到如下代码非常关键(这个是每次都需要去读取mysql 的配置信息)

2023-06-01 11:37:35 144

原创 Linux 运维小技巧

然后到该目录下进行清理,记住哦,正常的到目录下 rm -rf 会卡住不动的。查看到底哪个目录下面的文件最多,查看前30个目录最多文件即可。

2023-05-31 16:19:34 160

原创 Apache Zeppelin系列教程第七篇——运行paragraph的整个流程分析

前文分别讲述了,JdbcInterpreter、Interpreter、Zengine的流程,本文来主要串联起来paragraph的整个流程。

2023-05-18 21:47:03 467

原创 Apache Zeppelin系列教程第六篇——Zengine调用Interpreter原理分析

前文介绍jdbc interpreter和interpreter模块交互代码,本篇文章主要分析Zengine调用Interpreter模块代码。介绍完这篇文章之后,我们即可将paragraph run的流程串起来(后面会将整个流程进行串讲)同样,来看下这个测试类。

2023-05-17 21:10:08 600

原创 Apache Zeppelin系列教程第五篇——Interpreter原理分析

其实就是web 向server 发送请求,然后调用zengine,再到interpreter,最后到实际的执行模块,比如上文中介绍的JDBCInterpreter。以JDBCInterpreter为例讲解了实际jdbc的执行过程。下面是一个整体的架构图,本篇文章重点分析下Interpreter模块,重点来看下测试类。这边简单修改了这个测试类的代码。

2023-05-15 14:31:10 437

原创 Apache Zeppelin系列教程第四篇——JDBCInterpreter原理分析

以jdbc-Interpreter为例,可以参考下测试代码(这个代码里面可以直接测试jdbc的sql执行过程和数据返回过程)Interpreter 其实就是整个项目的核心,代码运行都是在里面进行执行的,首先来看下Interpreter的抽象类。

2023-05-10 13:54:56 420 4

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除