- 博客(25)
- 收藏
- 关注
原创 maxcompute 框架相关
1、实例数量① instance内存分配[256,12GB],默认为框架内存2G+JVM1G② map实例数根据split size决定,默认是256MB切分一个块,限制[1,100000]③ reduce实例数默认为map实例数的1/4,限制[0,2000]。当map后数据膨胀会导致reduce处理数据量较大,速度较慢,需要手动优化2、字节大小限制① resource字节数单job输入字节数默认不超过2GB② split size默认256MB,根据spli
2021-08-21 16:27:47
185
原创 SQL join
1、hash join① 适用情况:大表join小表,等值连接② 实现方式:小表作为hash表,存放在内存中 -> 按照join condition映射建立与大表(probe table)值相对应的hash表,也就是通过hash可以很快得到小表与大表对应的行,将大表和小表扫描一次就可以得到最终的结果集2、nested loop join① 适用情况:比较暴力的一种方式,适用性强② 实现方式:将两个表分为内外表,每扫描外表的一行数据都要在内表中查找与之匹配的行 ,查询效率低,为O(n
2021-08-18 16:22:29
150
原创 SQL索引相关
1、索引的概念索引是排好序的数据结构,用于提高查询速度2、索引的类型① 聚簇索引:索引顺序和数据存储顺序一致,类似于字典拼音目录② 非聚簇索引:索引的顺序与数据存储顺序不一致,类似于字典偏旁部首目录3、索引的数据结构① B树:平衡搜索二叉树,节点由key(排好序)和data组成,可以通过指针使用二分查找达到h*log(n)的查询效率② B+树:是B树的升级版,区别在于B+树的非叶子节点(最底层的节点)不存放数据,每一层可以存放更多的key,减小树高,减少了IO(IO消耗远大于数据
2021-08-18 14:39:42
134
原创 postgres SQL使用
1、可以直接进行类型转换比如:date::DATE 直接转换为date类型,其他类型同理2、JSON取数方式args::JSON->>'key_name'进行取值3、date类型直接+-来获取天数差值date01-date024、算百分比操作case when cnt01=0 then 0 else cnt02::float8/cnt01 end (避免出现除数为0异常)...
2021-08-16 10:46:17
144
原创 常用Java开发工具代码
1、比较string类型时间的大小public boolean lg(String s1, String s2) { int i1 = Integer.parseInt(s1); int i2 = Integer.parseInt(s2); if (i1 > i2) { return true; } return false;}2、将时间戳格式化为时间 public Stri
2021-07-14 14:24:45
297
1
原创 flink失去时间属性特性的操作
1、对时间属性字段以外的字段进行GROUP BY(滚动窗口、滑动窗口或会话窗口中的GROUP BY除外)操作。2、双流JOIN操作。3、复杂事件处理(CEP)语句中的MATCH_RECOGNIZE操作4、OVER窗口中的PARTITION BY操作5、UNION操作。UNION = RETRACT+UNION ALL如果经过以上操作后,继续使用该时间属性字段进行窗口函数运算,会出现类似org.apache.flink.table.api.ValidationException: Wind
2021-07-11 21:35:09
670
2
原创 flink双流join的技术思考
1、A流和B流时间相隔较短,几分钟或者几小时①策略:直接使用join操作②解释:join底层走的是:A来B没来,A会缓存起来(默认1.5天),B流来去缓存查A,join成功,然后输出。③注意点:如果是A left join B ,A来B没来A会先输出一条没join上的数据,B来的时候会将之前的输出做逻辑撤回,然后将join上的最新结果重新输出(下游要做好过滤等操作,保证输出的幂等性)2、A流和B流相隔时间较长,比如订单流这种以若干天为变化周期的数据①比如要给订单实时流添加相关的维度信息
2021-07-11 21:06:33
759
原创 遇到的报错
1、CAUSE: Source MQ-xxx partitions number has changed from 100 to 120ACTION: Wait the failover finish, flink is trying to recovery from source partiton change 实时任务运行时,MQ分区发生变化,会造成failover,flink会自动调整分区,不用特殊处理...
2021-07-05 15:28:37
132
原创 输出JSON对象带转义符“\“
最简单的办法做一个replaceJSONObject res = new JSONObject();res.put(key, val);return res.toString().replaceAll("\\\\","");这样输出的字符串就不再携带转义符
2021-07-05 10:53:11
831
原创 程序包不存在
确认依赖没有爆红,但是还是提示程序包不存在在命令行输入mvn idea:idea参考:https://baijiahao.baidu.com/s?id=1666135264347817292&wfr=spider&for=pc
2021-06-30 12:17:05
155
原创 flink双流join的策略
场景:比如电商订单业务的实时流,订单和订单明细1、订单流随着订单状态的变化,不断产生新数据2、订单明细作为流水表随着订单的产生,只来一次? or 订单明细随着订单状态的变化,同步更新?策略:1、如果订单明细流随着订单的产生,只来一次,a:双流join,因为双流join数据默认缓存在状态中1.5天,那么如果订单流1.5天后果来,将会join不上明细流。b:维表join,将订单明细流实时写到维表中,订单流过来去查维表做关联,那么明细流如果延迟了,将会导致先来的订单数据join不上。c:给订单
2021-06-10 11:18:04
740
原创 SQL谓词下推存在的“陷阱“
谓词下推:在SQL执行优化策略时,会将where相关的过滤条件放在前面来执行,如果此时涉及和另一张表的join操作,那么就可能会踩坑场景:1、A joinB 2、将join后的A的数据执行UDF 3、UDF处理后的数据过滤谓词下推后的执行顺序: 1、A中某字段执行UDF 2、对UDF处理后的数据进行过滤 3、过滤后的A与B再进行join问题点:谓词下推的原则是:先过滤再join,但是UDF逻辑较重,效率上:(join后少量数据执行UDF的时间)<(先全量执行UDF再过滤的时间),所以自动.
2021-06-10 10:52:13
449
原创 SQL过滤掉某一种类型下的子类型数据
1、如果选择s1=1 and s2='a'的数据,那么写法为where s1=1 and s2='a'2、如果不要s1为1时s2为'a'的数据,那么逻辑与上面取反为where s1!=1 OR s2!='a',写法如下
2021-06-07 18:11:45
170
原创 flink 经常发生 remove container
将一些维表加载到内存中,因为数据量过大导致节点加载时间长,worker节点与master节点的心跳超时,导致container被remove掉解决办法:1、减少加载到内存中的数量量2、默认每个节点发送一份数据,可以将全量数据分散到不同的worker节点上,减少单节点加载数据的压力...
2021-06-07 18:06:10
365
原创 maven已经引入依赖,可以运行,但是会爆红
目前遇到这个问题,发现是依赖下载不完整造成了办法:在maven仓库中,删除已经下载的依赖,clear一下,然后重启IDEA,重新下载依赖即可
2021-06-07 15:12:54
1059
原创 Failed to execute goal org.springframework.boot:spring-boot-maven-plugin
<plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId></plugin>意思好像是找不到main方法,但是明明有main方法把pom文件里的这个依赖注掉就可以了如果不行再试试别的办法呢...
2021-06-07 00:38:57
520
原创 错误: 找不到或无法加载主类 com.
报错:错误: 找不到或无法加载主类 com.根据个人经验的一种办法,仅供参考:1、2、按步骤勾选上,重新执行即可成功,如果不行的话,原因应该不一样,请另寻他法。
2021-05-05 16:57:50
1033
原创 位图bitmap bitset
暂时引用一片文章来记录,后续分享自己的心得:https://blog.youkuaiyun.com/jiabeis/article/details/98962359
2021-05-05 16:30:31
97
原创 URL encode and decode简单认识
1、URL:uniform resource location 即统一资源定位符2、URLencode的方式:https://mp.youkuaiyun.com/editor/html?not_checkout=1编码后(具体编码方式可以百度):https%3A%2F%2Fmp.youkuaiyun.com%2Feditor%2Fhtml%3Fnot_checkout%3D13、编码的作用:防止服务端接收到的URL产生乱码4、注意点:如果URL包含了%号,需要进行转义...
2021-05-04 21:35:28
142
原创 分桶表
使用示例:CREATE TABLE page_view(viewTime INT, userid BIGINT, page_url STRING, referrer_url STRING, ip STRING COMMENT 'IP Address of the User') COMMENT 'This is the page view table' PARTITIONED BY(dt STRING, country STRING) CLUSTERED BY(userid)
2021-05-03 23:40:42
123
原创 distribute by、group by、sort by、order by的相关释义
1、group by把相同的key发送到同一个reduce分区中,后面必须做聚合操作2、distribute by把相同的key发送到下游同一个reduce分区中,只是做数据分散3、order by全部排序,把所有数据拉到同一个节点进行排序,数据量大的时候可能会造成内存溢出4、sort by区内排序,对每个reduce分区内的数据进行排序,不保证全局有序5、cluster by如果distribute by和sort by的字段相同时,只用cluster by就可以完成
2021-05-03 22:09:49
1252
原创 Hologres使用记录
1、Holo直查maxcompute的限制1)单查询限制200G2)分区数限制512解决办法:将maxcompute的数据导入holo作为内表使用2、Holo在即系查询场景的使用通过flink将数据实时清洗到holo中,做一张增量更新的实时表,然后使用holo直查(结合报表工具来具体使用)如果需要维度信息,可以通过建立maxcompute外表的方式,做到同时将maxcompute外表+holo内表的联合查询,也就是对接多数据源的联合查询3、如何实现将离线数据定时写入到holo
2021-05-03 10:27:46
937
原创 数仓建模理论
1、首先从需求出发2、确定需求相关的数据域以及子域3、确定好维度和度量值4、画出模型矩阵,将每个域、维度、度量值对应起来5、根据规划好的维度以及度量值,去上游找对应的数据源,以及对缺失的数据字段的补充...
2021-05-02 23:58:45
95
原创 maxcompute相关
1、多条JSON嵌套格式解析类似于这种格式的字符串:"{...},{...}"LATERAL VIEW EXPLODE(SPLIT(SUBSTR(strs,3,LENGTH(orgpoiids)-4),'},{')) ex AS str
2021-05-02 23:26:35
341
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人