- 博客(181)
- 收藏
- 关注
原创 3. 组件协作——策略模式
定义一系列算法,把它们一个个封装起来,并且使它们可互相替换(变化该模式使得算法可独立于使用它的客户程序(稳定)而变化(扩展,子类化)。
2023-08-30 18:46:38
50
原创 hive写动态分区加distribute by
在程序的最后,按照动态分区的字段在程序最后加一个distribute by,在本例中,就是加distribute by type, salt,此时就可以保证相同的type 和 salt的数据,会在同一个task中执行,最后输出的文件个数也是在可接受范围内的,输出文件个数为 type * salt * ceil(file_size / 256m),在本例中,因为每个文件都小于256m,所以生成的文件个数就是4 * 512 * 1 = 2048。
2023-08-29 16:18:43
344
原创 Flink DataStream自定义实现IntervalLeftOuterJoin
因为Flink DataStream内置的Join操作,只有Inner Join,而对于Outer Join支持的比较少,Window Outer Join我们可以用cogroup来实现,而Interval Outer Join相对复杂,所以自己参考Flink IntervalJoinOperator实现了一个IntervalLeftOuterJoinFunction
2023-08-01 22:29:43
163
原创 7. Watermark
如上述案例:如果把Watermark的延迟调为 3,那么当 1 到达时,Watermark 为 -2,4到达时,Watermark 为 1(表示 1 以前的数据都到达了),5 到达时,Watermark 为 2(表示 2 以前的数据都到达了),知道 Event Time 为 8 的记录到达时,才表示 5 以前的数据都到达,关闭第一个窗口 [1, 5)。根据第一条定义,Wartermark 衡量 Event Time 的进展,即是可以起到 “调慢事件时间” 的作用,让程序误以为没有到达触发的事件。
2023-07-23 21:47:08
169
原创 12.状态阔缩容
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WemjYBAD-1690106129241)(https://raw.githubusercontent.com/MingRongXi/my-study-picture/master/%E7%9B%B4%E6%8E%A5%E7%94%A8hash%20key%E7%9A%84%E9%98%94%E7%BC%A9%E5%AE%B9.png)]CheckPoint在做快照时,会把算子的状态存储到分布式存储系统上,如HDFS。
2023-07-23 17:56:40
129
原创 如何评价数仓建设的质量
数据对业务分析的覆盖度如何。指标是否定义清晰,口径统一。如何评价数仓建设的质量?表说明是否清晰,易于使用。对决策支持的贡献度如何。二、从数据的角度出发。表用起来查询速度怎样。
2023-07-04 11:55:07
91
原创 hive cbo优化引起的bug
有一个任务,在混部集群默认开启,导致任务reduce个数太小,只启了2个reducetask,而maptask中读取的数据又很大,使得大量数据都写到这2个reduce task中,任务最终失败,在关闭这个参数后,可以启动1100个reducetask。对比执行计划,在开启这个参数后,hive 认为只会读取50000多行数据,而实际上是几十亿。hive.stats.fetch.column.stats导致reduce个数划分太小。
2023-05-19 18:51:22
222
原创 hive join
在连接的每个 map/reduce 阶段,序列中的最后一个表通过 reducer 流式传输(这里的流式传输指的是IO流,reducer一条一条读数据),而其他表则被缓存到内存中。因此,通过把最大的表放在序列中的最后,有助于减少reducer中用于缓冲连接键的特定值的行所需的内存。因此在使用 inner join 的时候,要把大表放在后面例如: 三个表的join被合成一个map/reduce job,表 a 和 b 的一个特定的key对应的values被缓存在 reducer 的内存中(这里可能有mr
2023-05-19 18:42:04
75
原创 13. 对象性能——享元模式
用共享技术有效地支持大量细粒度的对象。 享元模式的定义为我们提出了两个要求:细粒度的对象和共享对象。要求细粒度对象,那么不可避免地使得对象数量多且性质相近,那我们就将这些对象的信 息分为两个部分:内部状态和外部状态。内部状态 内部状态时对象可共享出来的信息,存储在享元对象的内部并且不会碎环境改变而改变,如我们例子中的char c,他们可以作为一个对象的动态附加信息,不必直接存储在某个对象中,属于可以共享的部分。外部状态。
2023-04-13 19:05:32
92
原创 11. 对象创建——Builder模式
PersonDirector类就可以根据用户的选择来建造小人了,而在建造的过程在指挥者这里完成了,用户就不需要知道了,而且,由于这个过程每一步都是一定要做的,那就不会少让少画一只手、少画一条腿的问题出现了。像这种因为粗心而导致程序异常在平时开发中还是比较常见的,比如我们在程序里需要画100个不同的小人,在高矮胖瘦上有细微的差别,我们在每次创建小人时都用上述的代码,这样是很容易有遗漏。**主要解决:**主要解决在软件系统中,有时候面临着"一个复杂对象"的创建工作,其通常由各个部分的子对象用一定的算法构成;
2023-04-13 18:56:37
522
原创 7. 对象创建——简单工厂
依据上面的实现方法,我们可以直接在Operation里新添加一个switch分支,但是这样导致的问题是如果频繁地添加运算符,就会频繁地修改Operation类,很容易在添加代码的时候将原有的代码改变。**分析:**其实,上面的实现方式违反了开放封闭原则,我们要使用一种结构,使得可以在不修改原有代码的基础上增加功能。此时,对于客户端来说,业务层使用的是什么计算逻辑是无感知的,就可以动态的添加运算符了,这就是简单工厂模式。**需求变更:**此时,我们需要新添加一个运算符,取余运算。
2023-04-13 18:51:10
71
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅
2