自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(106)
  • 收藏
  • 关注

原创 基于阿里云DataWorks的物流履约时效离线分析

设计分层存储策略:ODS层是从业务数据库读取的原始数据,不做处理,dwd层通过多个ods关联和清洗,形成可复用的明细层,dws层按照天维度聚合指标,如物流履约时长,客户进线次数,adm层面向特定主题开发。Parquet因支持更灵活的嵌套结构,压缩率略低,但压缩算法选择更多(如Snappy、Gzip)设计任务容错机制:根据任务的优先级和重要程度,设置不同的容错机制,以保障数据产出的及时性,准确性。业务需求拆解:根据维度建模理论,拆解业务需求,我主要负责的是履约时效和客户运营这两个场景的开发。

2025-05-09 07:13:36 673

原创 flink超时未揽收单量统计

方案2:metaQ定时消息,订单消息写入metaQ,利用metaQ的定时消息功能,根据用户写入的消息和时间,在指定时刻下发,flink接收两个数据源(kafka订单流,kafka出库流,metaQ延时消息流)判断订单是否超时揽收,这种方式除了需要维护flink程序,同时还要保障额外的消息中间层维护。方案4:flink的processfunction,是一个low-level流处理操作,通过改写其中的Processelement方法,可以告诉flinkstate里面存什么,以及如何更新state。

2025-05-08 20:18:33 1084

原创 基于Flink的用户画像 OLAP 实时数仓统计分析

通过散列算法(如MD5、SHA1或简单取模)为RowKey添加固定长度前缀,将数据均匀分散到不同Region中。拼接多个事实表形成大宽表,优化多流Join方式,抽取主键和外键形成主外键前置层,抽取外键和其余内容形成融合层,将4次事实表关联优化称为1次关联,减轻shuffle带来的网络传输,降低延迟和关联state的存储压力。高风险用户写入redis中,提供接口供风控单位调用,全量用户写入doris,上层利用BI可视化工具提供OLAP服务。:匹配连续多日(≥1天)的失败交易。),生成固定长度的前缀(如。

2025-05-08 20:12:23 1136

原创 flinktopn

不过空闲状态的清理并非确定性的,所以如果要计算有时间维度的排行榜(如按天、按小时等),需要把时间维度也加入PARTITION BY子句,而不是将保留时间设为对应的长度。Top-N是我们应用Flink进行业务开发时的常见场景,传统的DataStream API已经有了非常成熟的实现方案,如果换成Flink SQL,又该怎样操作?那么,Flink内部是如何将它转化成高效的执行方案的呢?本来想连带去重一起讲了的(毕竟去重与Top-N的实现方法类似,只是在物理计划上有区别),但是今天已经很累了,还是先回家休息吧。

2025-05-08 20:10:46 918

原创 【无标题】

当日多次进线用户投诉率识别,分配优质客服小二进行安抚(耐心小二+红包短信安抚+专人跟进)(当日进线次数,对话时长,问题分类):业务系统日志 → Kafka → Flink ETL加工 → HBase标签存储 → 客服系统应用。异常地址变更(如1小时内多次修改收货地址)需实时计算风险评分,触发拦截规则。设备异常登录(如多设备切换)需实时标记并限制敏感操作。(需毫秒/秒级响应,依赖动态数据流处理)

2025-04-21 11:36:38 688

原创 redis数据结构

字符串适合存储整个对象的JSON,而哈希适合存储各字段,便于获取部分信息。

2025-02-27 15:21:41 321

原创 通过Hive小文件合并(CombineHiveInputFormat)减少80%的Map任务数

小文件过多导致Map任务激增(每个文件至少一个Map),浪费资源且增加NameNode压力。

2025-02-23 19:27:04 640

原创 HBase二级索引设计:基于RowKey散列(HashPrefix)解决热点问题,结合Phoenix SQL层实现二级索引,通过Redis缓存活跃用户标签数据,降低HBase Scan压力

HBase的默认RowKey设计可能导致数据集中在单一Region,易因RowKey分布不均导致RegionServer热点问题。通过散列算法(如MD5、SHA1或简单取模)为RowKey添加固定长度前缀,将数据均匀分散到不同Region中。

2025-02-23 19:14:56 1030

原创 基于Flink SQL实现7天用户行为风险识别,结合滚动窗口预聚合与CEP复杂事件处理技术,根据用户7天的动作,包括交易,支付,评价等行为,识别用户的风险等级

基于FlinkSQL CEP构建多维度用户特征矩阵与高风险用户识别模型,需结合实时特征计算、动态规则管理和复杂事件检测能力。(袋鼠云动态CEP方案中的PatternProcessorDiscoverer机制[[2][5]])落地时可参考电商/金融行业案例,通过AB测试验证规则有效性(如误报率降低30%+结合,解决了传统风控模型规则更新滞后的问题。(参考优快云案例中的DWD层构建方法。(阿里云分享的1.16版CEP语法增强。

2025-02-22 19:06:41 1278

原创 SQL相关

设置一个flag,用户每进入一次,flag设为1,每退出一次,flag设为-1。计算每个视频类型下面播放量前10的视频id。a b 表示a关注b。求直播间最大在线人数。

2022-09-29 09:29:33 242

原创 Sqoop面试题

mapreduce,具体的说,是map任务。

2022-08-22 15:06:20 342

原创 Flume面试题

sink:输出到下游,sink是完全事务性的。3 ,增大 batchSize : 可以增大一次性批处理的 event 条数,适当调大这个参数,可以调高 source 搬运数据到 channel 的性能。(2kafka追求的是高吞吐,高负载,同一topic下可以有多个partition,由于是pull模式拉取数据,因此适合多个消费者的场景。2 ,使用 file channel 时,dataDirs 配置多个不同盘下的目录可以提高性能。1 ,memory :性能好,但是,如果发生意外,可能丢失数据。

2022-08-22 11:14:40 396

原创 开发经验介绍

去重指标的增量计算优化方案1 背景统计最近30天的uv(去重指标)select visitor_idfrom (select item_id ,count(distinct visitor_id) as ipv_uv_1d_001 from tbcdm.dwd_tb_log_obj_vst_di where ds <= '{bizdate}' and ds >= to_char(datea

2022-08-11 17:10:39 702

原创 草稿nkw问题

系统总会有一些坑,需要把这些坑填上,填坑的过程就是熟悉系统的过程。历史代码经过多次迭代总会导致复杂度高(分支、嵌套、循环很多),耦合严重,设计漏洞,性能隐患等,很难维护,这些就需要我们去重构了。抖音有一张流量表和一张交易表,分别是 table_a(mid, pv) 和 table_b(mid, gmv),如何将他们进行合并,数据倾斜如何处理。这块主要关注底层数据的模型,不仅仅要关注实体本身,更要关注实体间的数据流动,例如主从同步策略,数据迁移策略,以及不同数据模型的转换。客服反馈的常见问题有哪些?.....

2022-08-03 19:24:43 384

原创 数据仓库-数据治理

数据治理主要解决的问题,用通俗的话讲就是,我们有什么数据,数据对不对,为什么还没有跑出来。

2022-08-01 10:29:54 373

原创 数据质量监控

数据质量监控与保障:数据质量保障的学习,包括方法,数据测试,DQC配置,能发现数据问题,排查问题,解决问题,总结问题数据质量是数据开发里面非常重要的,错误的数据可能还会带来错误的决策。我们主要是监控数据的准确性、完成行、一致性、及时性。采取的措施是三步法:事前-事中-事后。事前主要通过自测,sqlscan,事中主要通过dqc进行监控,事后主要是处理分析,沉淀方法。准确性:数据信息是否存在存在错误或异常,是否符合业务预期,如号码位数是否正确,统计指标是否正常完整性:数据记录和信息是否完整,如数据记录缺失、字

2022-06-24 15:51:38 1028

原创 离线性能优化

离线性能优化

2022-06-24 15:39:44 276

原创 项目面试题

为什么要做这个项目?是为了解决什么问题?项目的性质是什么?多少个人完成?你负责了什么工作?有什么亮点?难点?运用了哪些技术?有什么收获?ODS层采用什么压缩方式和存储格式?压缩采用Snappy,存储采用orc,压缩比是100g数据压缩完10g左右。DWD层做了哪些事? 数据清洗 空值去除 过滤核心字段无意义的数据,比如订单表中订单id为null,支付表中支付id为空 对手机号、身份证号等敏感数据脱敏 对业务数据传过来的表进行

2022-05-29 11:22:43 180

原创 Linux面试题

1.查看内存的指令free 内容:总内存、使用内存、剩余内存等

2022-05-29 10:13:11 86

原创 Flink面试题

1.WatermarkAssignerWithPeriodicWatermarks当flink基于eventtime的时间窗口处理数据时,必须确定所有该时间窗口内的数据全都进入之后,才会开始处理数据,由于数据可能是乱序的,在watermark里面有个时间戳,flink会使用watermark标记所有小于该时间戳的消息都已流入,当操作符处理到WaterMark时,它对所有小于该WaterMark时间戳的时间窗口的数据进行处理并发送到下一个操作符节点,然后也将WaterMark发送到下一个操作符节点

2022-05-29 10:11:32 457

原创 ZooKeeper面试题

1.zookeeper选举机制1.初始化时的选举优先看zxid,zxid相同的情况下看myid集群启动时,1号zxid=0,myid=1,2号zxid=0,myid=2,3号zxid=0,myid=31号启动,先投给自己一票2号启动,zxid与1号相同,myid比1号大,因此1号投给2号,2号也投给2号,超过半数,因此2号成为leader,1号成为follower3号启动,已经有了Leader,3号成为follower当选举结束后,更新状态,Leader更新为Leading,fo

2022-05-29 10:10:13 90

原创 Kafka面试题

1.kafka为什么快1.数据压缩,减少网络IO,压缩格式包括Gzip、Snappy2.批量传输,先将消息缓存在内存中,然后达到某个条件(比如到多少条数据,或者到几秒钟)就flush一次,flush到磁盘上3.顺序读写,避免随机寻址,写入时是单个partition末尾添加4.利用操作系统的page cache优化读写5.零拷贝技术。在producer和consumer两个方面都使用了零拷贝技术。网络数据持久化到磁盘 (Producer 到 Broker)。(使用了mmap)磁盘文

2022-05-29 10:08:32 282 1

原创 MapReduce面试题

1. MR是怎么确定MapTask数量的如果不进行任何设置,默认的map个数是和blcok_size相关的。default_num = total_size / block_size;如果输入中有很多小文件,依然想减少map个数,则需要将小文件merger为大文件2. MapReduce流程(1)首先是对文件进行切片split,根据文件的大小和block的大小进行切片。默认block为128M(2)然后对切片后的数据解析问key-value。key为偏移量,value为具体的内容

2022-05-29 10:07:22 197

原创 Hadoop面试题

1.Hadoop高可用有2台机器,2个namenode,一个active,一个standby有一个守护进程journalnodes,会和2个nn进行通信,当activeNN对命名空间信息修改时,会持久化到editslog上,然后standbyNN观察editslog,并更新自己的信息,保持信息和activeNN同步。还有一个zookeeper failover controller,通过zookeeper failover controller里面的health monitor监控NN,如果ac

2022-05-29 10:06:32 87

原创 HDFS面试题

1.2nn作用帮助nn进行管理,nn主要存储元数据信息,当nn运行的时候,元数据信息是存在内存中的,也可以持久化到磁盘上。持久化到磁盘上有两个文件,一个是fsimage,一个是edits log。Fsimage是nn启动时的一个快照,edits log是nn启动后做的改动。只有当nn重启时,edits log才会合并到fsimage中,但是nn不会经常重启,因此edits log就会变得很大。此时2nn会将edits log中的信息更新到自己的fsimage中,然后将自己的fsimage复制给nn的

2022-05-29 10:05:49 97

原创 Yarn面试题

1.Yarn任务提交过程1.Client向rm提交程序,申请运行时需要的资源2.ResourceManager收到请求之后,调用ApplicationManager向NodeManager发送请求,申请一个资源(Container),并且要求Container启动ApplicationMaster.3.ApplicationMaster启动之后,首先注册自己到ResourceManager,然后为自己的Task申请Container,ResourceManager收到请求之后,会要求NodeMa

2022-05-29 10:05:03 280

原创 数据仓库面试题

1.Hive的执行过程?1)解析器parser:进来一个SQL字符串,将SQL解析,解析的结果是AST(抽象语法树见官网详细解释以及使用)AST本质还是字符串2)遍历AST Tree,抽象出查询的基本组成单元QueryBlock3)逻辑执行计划解析,遍历QueryBlock,翻译为执行操作树OperatorTree4)逻辑执行计划优化,将OperatorTree变换,合并不必要的ReduceSinkOperator,减少shuffle数据量5)物理执行计划解析,生成MapReduce任务

2022-05-29 10:04:11 785

原创 算法面试题

1. 内存受限的情况下,有一个整数数组,请你根据快速排序的思路,找出数组中第K大的数:用mapreduce的思想,首先对数据进行哈希,将hash后的值按照范围划分到不同的机器上,这样每台机器就只处理一部分数据,然后统计每台机器上出现次数最多的前N个数据,然后将每台机器统计出来的结果进行汇总,再求出总的前N个数据。............

2022-05-29 10:01:50 88

原创 数据库面试题

1.数据库隔离等级1.脏读:事务A读取到了事务B未提交的数据2.不可重复读:两次查询结果不一致,因为两次查询中间有另外一个事务往里面更新了数据,不可重复读和脏读的区别:脏读读到的是一位未提交的数据,不可重复读读到的是前一个事务提交的数据,解决不可重复读就是多读几次,以最后一次为准,或者锁行3.幻读:幻读和不可重复读都是读取另外一个已经提交的事务,但是不可重复读一般是发生在update时,数据被修改,幻读发生在insert或者delete时,数据会多出来一条,解决幻读可以锁表隔离.

2022-05-29 09:59:58 107

原创 Java面试题

1.Hashmap和treemap的异同异:Hashmap中元素无序,通过hashcode查找,treemap中元素按照某一顺序排列 Hashmap基于hash表实现,treemap基于红黑树实现 Hashmap适用于map插入、删除、定位元素,treemap适用于按自然顺序遍历同:1.都是线程不安全的2.说说多态1.多态是同一个对象,在不同的时刻表现出来的不同状态2.前提:(1)有继承或者实现(2)有方法的重写(3)父类的引用指向子类对象3.多态特点:表现为.......

2022-05-29 09:54:16 499

原创 java Comparator接口自定义排序规则

如果是后-前,就是降序排序如果是前-后,就是升序排序 Arrays.sort(people, new Comparator<int[]>() { @Override public int compare(int[] o1, int[] o2) { if (o1[0] != o2[0]){ //后-前,降序 retu

2022-03-28 11:10:22 819

原创 动态规划-关于dp[i]含义的一点心得

关于dp[i]的含义,目前接触到的有两种:第一种:dp[i]表示以索引i结尾的最大值,这种情况包含的结果内必须是i是最后一个元素,包括下标i之前的最大连续子序列和为dp[i]。举例:leetcode53. 最大子数组和给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。子数组 是数组中的一个连续部分。示例 1:输入:nums = [-2,1,-3,4,-1,2,1,-5,4]输出:6解释:连续子数组[4,-1,2,1.

2022-03-11 15:46:11 1120

原创 leetcode二叉树103二叉树的锯齿形层序遍历

给你二叉树的根节点 root ,返回其节点值的 锯齿形层序遍历 。(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行)。示例 1:输入:root = [3,9,20,null,null,15,7]输出:[[3],[20,9],[15,7]]示例 2:输入:root = [1]输出:[[1]]示例 3:输入:root = []输出:[]注意点:关于顺序的问题1.removeFirst()永远是和addLast()搭配,removeLast()永远是和

2022-02-22 18:09:57 6987

原创 leetcode回溯五题

回溯模板:void backtracking(){if(终止条件) {收集结果return }for(集合的元素集,类似子节点的个数){处理结点递归函数;回溯操作(撤销处理结点12, 2撤销 ,13 撤销3, 14)}}何时要startindex?(在组...

2022-02-07 16:09:33 5641

原创 leetcode15. 三数之和

给你一个包含 n 个整数的数组nums,判断nums中是否存在三个元素 a,b,c ,使得a + b + c = 0 ?请你找出所有和为 0 且不重复的三元组。注意:答案中不可以包含重复的三元组。示例 1:输入:nums = [-1,0,1,2,-1,-4]输出:[[-1,-1,2],[-1,0,1]]示例 2:输入:nums = []输出:[]示例 3:输入:nums = [0]输出:[]思路:排序,一次遍历+双指针注意点:需要去重有三个点需要去重...

2022-02-04 17:37:25 164

原创 leetcode双指针11盛最多水的容器

给你 n 个非负整数 a1,a2,...,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0) 。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。说明:你不能倾斜容器。示例 1:输入:[1,8,6,2,5,4,8,3,7]输出:49解释:图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下,容器能够容纳水(表示为蓝色部分)的最大值为49。示例 2:输入..

2022-02-04 16:42:35 117

原创 leetcode字符串5最长回文子串

给你一个字符串 s,找到 s 中最长的回文子串。示例 1:输入:s = "babad"输出:"bab"解释:"aba" 同样是符合题意的答案。示例 2:输入:s = "cbbd"输出:"bb"示例 3:输入:s = "a"输出:"a"示例 4:输入:s = "ac"输出:"a"思路:遍历字符串,对每个位置进行一次判定(在其位置的最大回文子串)注意:回文子串不是指非得从中间开始的,例如ccccbbaabb,最大回文子串为bbaabb,因此需要从每个位置都要遍

2022-02-02 14:37:11 230

原创 leetcode字符串3无重复字符的最长子串

给定一个字符串 s ,请你找出其中不含有重复字符的最长子串的长度。示例1:输入: s = "abcabcbb"输出: 3解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。示例 2:输入: s = "bbbbb"输出: 1解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。示例 3:输入: s = "pwwkew"输出: 3解释: 因为无重复字符的最长子串是"wke",所以其长度为 3。 请注意,你的答案必须是 子串 的长度,"...

2022-02-01 17:04:03 6433

原创 leetcode链表2两数相加

给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。请你将两个数相加,并以相同形式返回一个表示和的链表。你可以假设除了数字 0 之外,这两个数都不会以 0 开头。示例 1:输入:l1 = [2,4,3], l2 = [5,6,4]输出:[7,0,8]解释:342 + 465 = 807.示例 2:输入:l1 = [0], l2 = [0]输出:[0]示例 3:输入:l1 = [9,9,9,9,9,9,

2022-01-30 17:04:12 142

原创 leetcode二进制461汉明距离

两个整数之间的 汉明距离 指的是这两个数字对应二进制位不同的位置的数目。给你两个整数 x 和 y,计算并返回它们之间的汉明距离。示例 1:输入:x = 1, y = 4输出:2解释:1 (0 0 0 1)4 (0 1 0 0) ↑ ↑上面的箭头指出了对应二进制位不同的位置。示例 2:输入:x = 3, y = 1输出:1注意点:1. Integer.bitCount(参数) 统计参数中有几个12. 异或运算 ^ 相同为0,不同为1...

2022-01-30 16:12:59 1715

空空如也

空空如也

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

TA关注的人

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