- 博客(51)
- 收藏
- 关注
原创 SPARK调优:AQE特性(含脑图总结)
SparkAQE是spark 3.0引入的一大重要功能,今天我们来聊一聊AQE的实现原理。了解一个功能,先来了解其面临的问题。当涉及到大型集群中的复杂查询性能时,处理的并行度和正确Join策略选择已被证明是影响性能的关键因素。
2024-10-02 18:26:26 1600
原创 互联网广告效果优化
原来的意思是指在投放广告时所需要或所耗费的材料,如广告纸,传单,横幅,气球等等,只要是能体现出广告的所有材料就叫做广告物料。互联网广告的物料是广告内展现的内容,基本的物料形式包括文字、图片、富媒体、视频等。一个广告可以上传多个物料,而同一个物料也可以被多个不同的广告使用。(内容来自百度百科)定向需要加价么?参考文档:http://www.jlepsdi.com/post/9801.html什么是默认竞价与定向组设置竞价?如何设置?程序化交易广告是以。
2024-09-22 14:02:31 690
原创 Flink架构
如图,DataFlow程序可以DataFlow图(DAG)表示,由于流和转换算子组成。每个DataFlow都是以数据源Source开始数据汇Sink结束。程序中的转换和DataFlow的算子常常是一对一的关系。数据并行和任务并行数据并行:相同算子在不同的数据分区中运行任务并行:不同的算子任务并行计算数据交换策略,参考Flink数据交换策略Partitioner转发策略(forward Strategy),类似于Spark中的map广播策略(broadcast Strategy)
2024-09-22 13:24:03 1042
原创 互联网广告产品基础知识
首先我们可以通过增加广告资源库存和提高广告占有率两个方面,来提升广告曝光量,再进一步通过优化广告物料和通过用户标签体系实现精准定向广告两个方面,来提升广告点击率,最后我们可以通过优化着陆页、应用A/B test技术和oCPM系列技术,来提升广告转化率。在整个效果优化过程中,我们要坚持先简单再复杂,先人工运营再系统优化的原则,先处理明面上的问题,再处理深层问题,由浅入深,层层递进,规划好产品迭代的节奏。
2024-09-21 15:36:01 1025
转载 MySql2Hive:美团DB数据同步到数据仓库的架构与实践
当用户提交某个DB的Binlog采集请求时,CanalManager首先会调用DBA平台的相关接口,获取这一DB所在MySQL实例的相关信息,目的是从中选出最适合Binlog采集的机器。Delta表中的数据是当天的最新数据,当一条数据在一天内发生多次变更时,Delta表中只存储最后一次变更后的数据。因此,选择结果中表B对应的记录为NULL的数据,即是应当被保留的数据。Binlog是MySQL的二进制日志,记录了MySQL中发生的所有数据变更,MySQL集群自身的主从同步就是基于Binlog做的。
2024-09-16 16:37:36 589
原创 互联网广告产品:行业蓝图篇
在这个时代,系统了解广告产品的变现模式是十分必要的,同时也是快速提升个人竞争力的方式之一。而我们接下来要做的就是深入学习互联网广告及产品,并且高效利用这一模式进行变现。
2024-08-17 23:13:46 1347
原创 FLINK-运行架构笔记脑图分享
虽然现在大厂的开发工具都非常高效、只需要进行参数配置、Flink-sql写业务逻辑,但是在资源配置逻辑优化上不可避免需要了解底层的组件配置。面试时可能也会被问到FLINK是如何进行资源分配、作业运行的等。以下是在学习时记录的思维导图,希望对你能有所帮助!
2024-07-20 16:03:02 382
原创 FLINK-checkpoint失败原因及处理方式
在 Flink 或其他分布式数据处理系统中,Checkpoint 失败可能由多种原因引起。
2024-07-20 11:32:17 718 1
原创 HIVE:使用get_json_object解析json对象遇到的坑
或[‘’]:表示子节点。MaxCompute支持用这两种字符解析JSON对象,当JSON的Key本身包含.时,可以用[‘’]来替代。获取key1的对象为嵌套对象,可以使用.或[]获取,但是如果key包含.,则需要使用[]获取。[]:[number]表示数组下标,从0开始。
2024-07-20 11:23:32 497
原创 MYSQL-如何正确使用索引
每次查找数据时把磁盘IO次数控制在一个很小的数量级,最好是常数数量级。那么我们就想到如果一个高度可控的多路搜索树是否能满足需求呢?就这样,b+树应运而生(B+树是通过二叉查找树,再由平衡二叉树,B树演化而来)。
2024-06-02 15:56:48 761
原创 FLINK-窗口算子基础知识(脑图总结)
在流处理中,我们往往需要面对的是连续不断、无休无止的无界流,不可能等到所有所有数据都到齐了才开始处理。所以聚合计算其实只能针对当前已有的数据——之后再有数据到来,就需要继续叠加、再次输出结果。这样似乎很“实时”,但现实中大量数据一般会同时到来,需要并行处理,这样频繁地更新结果就会给系统带来很大负担了。更加高效的做法是,把无界流进行切分,每一段数据分别进行聚合,结果只输出一次。这就相当于将无界流的聚合转化为了有界数据集的聚合,这就是所谓的“窗口”(Window)聚合操作。
2024-06-02 14:57:21 778
原创 FLINK-datastream API 转换操作
如果所有预定义分区策略都不合适,可以使用partitionCustom()方法自定义分区策略。
2024-05-19 19:27:38 864
原创 【数据仓库工具箱】DW/BI系统的核心元素和基本要求
DW/BI 环境划分为4个不同的,各具特色的组成部分。记录的是操作型系统,用于获取业务事务。源数据关注的是处理性能和可用性。源系统一般不维护历史信息,而这部分责任可以依靠好的数据仓库来实现。是处于操作型系统和数据展现区之间的部分,1. 获取是将数据从操纵型系统中导入数据仓库中,2. 数据转换,elt系统通过数据清洗/合并来自不同数据源的数据/复制数据等,增强数据价值,3.数据加载,实际构建和加载数据到展现区域的目标维度模型中。elt 过程的主要任务是识别维度和事实,因此其包含的子系统非常重要。
2024-04-21 17:28:18 739
原创 HIVE:谓词下推
谓词下推 Predicate Pushdown(PPD),简而言之,就是在不影响结果的情况下,尽量将过滤条件提前执行。谓词下推后,过滤条件在map端执行,减少了map端的输出,降低了数据在集群上传输的量,节约了集群的资源,也提升了任务的性能。因为unix_timestamp是不确定函数,在编译的时候无法得知,所以,整个表达式不会被pushed,即ds='2019-10-09’也不会被提前过滤。比如以下选择,left join中左表s1为保留行表,所以on条件(join过滤条件)不能下推到s1中。
2024-04-21 16:26:47 656
原创 Spark:性能调优实战
一个Executor中同时可以执行的task数目(在Executor内存不变的情况下,executor-cores数越大,平均下来一个task可以使用的内存就越少)Executor Java进程的堆内存大小,即Executor Java进程的Xmx值Executor Java进程的off-heap内存,包括JVM overhead,sort、shuffle以及Netty的堆外内存等是否开启动态资源分配,强烈建议开启。开启动态资源分配后,同一时刻,最多可申请的executor个数。
2024-04-14 17:42:53 772
原创 Spark:shuffle key中包含rand问题
对于需要根据rand进行shuffle来实现将数据进行随机打散的情况,可以把shuffle规则从rand改成与数据的确定列绑定,也就是deterministic_function(deterministic_col1,出现问题的原因是:作业在进行的shuffle的时候,同一行数据,shuffle的结果不是幂等的。’, coalesce(store_id, 0), ‘_’,coalesce(delv_center_id, 0))),其中concat的字段是表的唯一粒度;1、用一个整数的id对20取模。
2024-04-14 17:16:52 498
原创 分布式快照算法 Chandy-Lamport
Chandy-Lamport 算法通过抽象分布式系统模型描述了一种简单直接但是非常有效的分布式快照算法。讨论 Chandy-Lamport 算法一定要注意算法的几个前提:网络可靠、消息有序。Spark 的 Structured Streaming 虽然在官方博客中披露使用的 Chandy-Lamport 算法来做 Failover 处理,但是并没有更细节的披露。相比之下 Flink 在 2015 发布了一篇论文更适合在工程上实现,而且已经应用在了 Flink 项目中。
2024-04-14 16:58:40 1127
原创 Hive:正则regexp_extract函数
语法: regexp_extract(string subject, string pattern, int index)说明: 将字符串subject按照pattern正则表达式的规则拆分,返回index指定的字符。第二参数: 需要匹配的正则表达式。2 是显示第二个括号里面的字段…第一参数: 要处理的字段。0是显示与之匹配的整个字符串。1 是显示第一个括号里面的。返回值: string。
2024-04-14 15:31:27 488
原创 OLAP与OLTP的区别知识
像 有下单的流程,那么这个下单流程产生的订单会是在OLTP数据库中,而如果BOSS或者运营想看本个月的销售运营情况,如订单间夜、销售额的统计,理论上是应该在OLAP数据库(或者仓库),所以从本质上来讲,OLAP是读为主而OLTP以写为主。OLTP系统强调的是内存效率,实时性比较高;OLAP: 联机分析处理(OLAP)系统是数据仓库系统最主要的应用,专门设计用于支持复杂的分析操作,侧重对决策人员和高层管理人员的决策支持,强调的是数据分析,响应速度要求没那么高。
2024-04-14 15:28:41 343 1
原创 Hive:bigint和string进行join出现匹配错误问题
bigint和string比较时会隐式地都转换成double,java中double的精度只有15-16位(double可以精确的表示小于2^52=4503599627370496的数字)。当数字超过精度的时候就会比较不准确,出现上面描述的现象。在hive中,两个表进行join,on条件两表的字段含义一致(都是整数),但数据类型不一致:string和bigint。a)原因:Java中精度只有15至16位,当数据超过精度就会不准——也就会出现超过精度的记录join上许多不一致的记录。
2024-04-14 15:26:13 460 1
原创 Hive:transform和udf
transform中的值作为输入, 然后传递给python脚本,最后经过python的处理后,输出想要得到的字符串格式。工作中发现有时候会用到python脚本进行数据计算,但是现在貌似已经不这样再处理,一般使用封装好的udf函数。注意:在利用本地的python处理时,首先需要add file *.py;
2024-04-14 15:20:31 621 1
原创 Hive-distribute by与group by,order by与sort by 的区别,cluster by
涉及排序的函数的差异描述
2024-04-14 14:48:06 716 1
原创 date_format函数用法,大小写差异导致数据异常
可以发现format参数大小写对于日期输出有显著影响,容易出现数据问题。标准的应该是 yyyy-MM-dd。
2024-01-12 14:22:24 445 1
原创 count distinct总结
原理总结:count distinc 在spark上运行,会基于Expand, Exploded Shuffle, Partial Aggregations,多个count distinct转化为count
2024-01-04 17:26:37 494 1
原创 1 在线广告综述
广告是由已确定的出资人通过各种媒介进行的有关产品(商品、服务和观点)的,通常是有偿的、有组织的、综合的、劝服性的非人员的信息传播活动。三方角色:需求方=广告主/代表广告主利益的代理商供给方=媒体受众出资人、媒体和受众这三者的利益博弈关系是广告活动永远的主线,这一主线将贯穿于商业和产品形态的整个演化过程。另外,该定义还阐明了广告必须是有偿的、非人员的信息传播活动。这两点限制,前者使得广告的目标变得明确,后者使得这一目标可以采用计算的方式来优化,而这些都是计算广告产生的基础。
2023-09-16 15:36:32 142 1
原创 Flink状态处理
如图,DataFlow程序可以DataFlow图(DAG)表示,由于流和转换算子组成。每个DataFlow都是以数据源Source开始数据汇Sink结束。程序中的转换和DataFlow的算子常常是一对一的关系。数据并行和任务并行数据并行:相同算子在不同的数据分区中运行任务并行:不同的算子任务并行计算数据交换策略,参考Flink数据交换策略Partitioner转发策略(forward Strategy),类似于Spark中的map广播策略(broadcast Strategy)
2023-07-23 14:26:57 127 1
原创 大数据处理框架性能和可靠性保障机制
什么是shuffle机制?运行在不同stage、不同节点上的task间如何进行数据传递。shuffle解决的问题是如何将数据重新组织,使其能够在上游和下游之间进行传递和计算。如果是单纯的数据传输,则只需要对数据进行分区、通过网络传输即可,没有太大难度,但是shuffle机制还需要进行各种类型的计算(如聚合、排序),而且数据量一般会很大。
2023-05-28 18:01:34 115
原创 大数据处理框架的核心理论
数据源数据模型:对输入、输出和中间数据进行抽象表示,使得程序能够识别处理。比MR的数据模型<k,v>record,更高层的抽象:RDDRDD只是一个逻辑概念,在内存中并不会为RDD分配存储空间(除非该RDD需要被缓存)。RDD中的数据只会在计算中产生,并且在计算完成后就会消失。RDD可以包含多个分区,不同分区可以由不同的任务(task)在不同节点进行处理。数据操作计算处理结果。
2023-05-28 17:55:14 103
原创 第一部分:大数据处理框架的基础知识
大数据的概念:大数据具有数据量大(Volume)、数据类型多样(Variety)、产生与处理速度快(Velocity)、价值高(Value)的4V特性。大数据带来的挑战:传统数据库和数据仓库面临着可扩展性的问题。
2023-05-27 13:18:44 535
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人