欧博网站
热门标签

太平洋在线捕鱼博彩网站(www.monarchsportspro.com)

时间:2023-10-30 07:18    点击次数:135
太平洋在线捕鱼博彩网站(www.monarchsportspro.com)[[437676]]

本文转载自微信公众号「大数据羊说」iba真人百家乐,作家antigeneral了呀 。转载本文请关系大数据羊说公众号。

1.序篇

源码公众号后台申诉1.13.2 sql lookup join获得。

空话未几说,我们先胜利上本文的目次和论断,小伙伴不错先看论断快速了解博主祈望本文能给小伙伴们带来什么匡助:

配景及应用场景先容:博主祈望你能了解到,flink sql 提供了随意考查外部存储的 lookup join(与上节不同,上节说的是流与流的 join)。lookup join 不错浅易调节为使用 flatmap 考查外部存储数据然后将维度字段拼接到刻下这条数据上头 来一个实战案例:博主以曝光用户日记流关联用户画像(年事、性别)维表为例先容 lookup join 应该达到的关联的预期成果。 flink sql lookup join 的解决决议以及旨趣的先容:主要先容 lookup join 的在上述实战案例的 sql 写法,博主祈望你能了解到,lookup join 是基于处理本事的,何况 lookup join 常常会由于考查外部存储的 qps 过高而导致背压,产出蔓延等性能问题。我们不错鉴戒在 DataStream api 中的维表 join 优化想路在 flink sql 使用 local cache,异设施查维表,批量考查维表三种格式去解决性能问题。 转头及瞻望:官方并莫得提供 批量考查维表 的才略,因此博主我方竣事了一套,具体使用格式和旨趣竣事敬请期待下篇著作。 2.配景及应用场景先容

维表行为 sql 任务中一种常见表的类型,其骨子便是关联表数据的稀疏数据属性,等闲在 join 语句中进利用用。比如源数据有东谈主的 id,你目下想要得到东谈主的性别、年事,那么不错通过用户 id 去关联东谈主的性别、年事,就不错得到更全的数据。

维表 join 在离线数仓中是最常见的一种数据处理格式了,在及时数仓的场景中,flink sql 目下也支撑了维表的 join,即 lookup join,坐褥环境不错用 mysql,redis,hbase 来行为高速维表存储引擎。

Notes:

在及时数仓中,常用及时维表有两种更新频率

及时的更新:维度信息是及时新建的,及时写入到高速存储引擎中。然后其他及时任务在作念处理时及时的关联这些维度信息。

周期性的更新:对于一些徐徐变化维度,比如年事、性别的用户画像等,几万年齐不变化一次的东西??,及时维表的更新不错是小时级别,天级别的。

3.来一个实战案例

来望望在具体场景下,对应输入值的输出值应该长啥样。

需求主义:使用曝光用户日记流(show_log)关联用户画像维表(user_profile)关联到用户的维度之后,提供给卑劣盘算推算分性别,年事段的曝光用户数使用。此处我们只暖和关联维表这一部分的输入输出数据。

来一波输入数据:

现在越来越多的人开始关注体育比赛,这也为博彩行业提供了更多的机会。

曝光用户日记流(show_log)数据(数据存储在 kafka 中):

log_id timestamp user_id 1 2021-11-01 00:01:03 a 2 2021-11-01 00:03:00 b 3 2021-11-01 00:05:00 c 4 2021-11-01 00:06:00 b 5 2021-11-01 00:07:00 c

用户画像维表(user_profile)数据(数据存储在 redis 中):

user_id(主键) age sex a 12-18 男 b 18-24 女 c 18-24 男

扎眼:redis 中的数据结构存储是按照 key,value 去存储的。其中 key 为 user_id,value 为 age,sex 的 json。如下图所示:

user_profile redis

预期输出数据如下:iba真人百家乐

log_id timestamp user_id age sex 1 2021-11-01 00:01:03 a 12-18 男 2 2021-11-01 00:03:00 b 18-24 女 3 2021-11-01 00:05:00 c 18-24 男 4 2021-11-01 00:06:00 b 18-24 女 5 2021-11-01 00:07:00 c 18-24  iba真人百家乐

flink sql lookup join 登场。底下是官网的贯穿。

https://nightlies.apache.org/flink/flink-docs-release-1.13/docs/dev/table/sql/queries/joins/#lookup-join

皇冠体育在线 4.flink sql lookup join

4.1.lookup join 界说

电竞

以上述案例来说,lookup join 其实浅易调节来,便是每来一条数据去 redis 内部搂一次数据。然后把关联到的维度数据给拼接到刻下数据中。

闇练 DataStream api 的小伙伴萌,浅易来调节,便是 lookup join 的算子便是 DataStream api 中的 flatmap 算子中处理每一条来的数据,针对每一条数据去考查用户画像的 redis。(实践上,flink sql api 中也照实是这么竣事的!sql 生成的 lookup join 代码便是继承了 flatmap)

4.2.上述案例解决决议

来望望上述案例的 flink sql lookup join sql 奈何写:

CREATE TABLE show_log (     log_id BIGINT,     `timestamp` as cast(CURRENT_TIMESTAMP as timestamp(3)),     user_id STRING,     proctime AS PROCTIME() ) WITH (   'connector' = 'datagen',   'rows-per-second' = '10',   'fields.user_id.length' = '1',   'fields.log_id.min' = '1',   'fields.log_id.max' = '10' );  CREATE TABLE user_profile (     user_id STRING,     age STRING,     sex STRING     ) WITH (   'connector' = 'redis',   'hostname' = '127.0.0.1',   'port' = '6379',   'format' = 'json',   'lookup.cache.max-rows' = '500',   'lookup.cache.ttl' = '3600',   'lookup.max-retries' = '1' );  CREATE TABLE sink_table (     log_id BIGINT,     `timestamp` TIMESTAMP(3),     user_id STRING,     proctime TIMESTAMP(3),     age STRING,     sex STRING ) WITH (   'connector' = 'print' );  -- lookup join 的 query 逻辑 INSERT INTO sink_table SELECT      s.log_id as log_id     , s.`timestamp` as `timestamp`     , s.user_id as user_id     , s.proctime as proctime     , u.sex as sex     , u.age as age FROM show_log AS s LEFT JOIN user_profile FOR SYSTEM_TIME AS OF s.proctime AS u ON s.user_id = u.user_id 

这里使用了 for SYSTEM_TIME as of 时态表的语法来行为维表关联的象征语法。

Notes:

及时的 lookup 维表关联能使用处理本事去作念关联。

运行适度如下:

log_id timestamp user_id age sex 1 2021-11-01 00:01:03 a 12-18 男 2 2021-11-01 00:03:00 b 18-24 女 3 2021-11-01 00:05:00 c 18-24 男 4 2021-11-01 00:06:00 b 18-24 女 5 2021-11-01 00:07:00 c 18-24 男

flink web ui 算子图如下:

澳门太阳城网址

flink web ui

但是!!!但是!!!但是!!!

flink 官方并莫得提供 redis 的维表 connector 竣事。

皇冠体育

没错,博主我方竣事了一套。对于 redis 维表的 connector 竣事iba真人百家乐,胜利参考底下的著作。齐是不错从 github 上找到源码拿来用的!

flink sql 知其是以然(二)| 自界说 redis 数据维表(附源码)

4.3.对于维表使用的一些扎眼事项

归拢条数据关联到的维度数据可能不同:及时数仓中常用的及时维表齐是在握住的变化中的,刻下流表数据关联完维表数据后,若是归拢个 key 的维表的数据发生了变化,已关联到的维表的适度数据不会再同步更新。举个例子,维表中 user_id 为 1 的数据在 08:00 时 age 由 12-18 变为了 18-24,那么当我们的任务在 08:01 failover 之后从 07:59 启动回溯数据时,原来应该关联到 12-18 的数据会关联到 18-24 的 age 数据。这是有可能会影响数据质地的。是以小伙伴萌在评估你们的及时任务时要考虑到这少量。

会发生及时的新建及更新的维表博主提倡小伙伴萌应该成立起数据蔓延的监控机制,督察出现流表数据先于维表数据到达,导致关联不到维表数据

4.4.再说说维表常见的性能问题及优化想路

整个的维表性能问题齐不错转头为:高 qps 下考查维表存储引擎产生的任务背压,数据产出蔓延问题。

举个例子:

太平洋在线捕鱼 在莫得使用维表的情况下:一条数据从输入 flink 任务到输出 flink 任务的时延假如为 0.1 ms,那么并行度为 1 的任务的隐晦不错达到 1 query / 0.1 ms = 1w qps。 在使用维表之后:每条数据考查维表的外部存储的时长为 2 ms,那么一条数据从输入 flink 任务到输出 flink 任务的时延就会酿成 2.1 ms,那么雷同并行度为 1 的任务的隐晦只可达到 1 query / 2.1 ms = 476 qps。两者的隐晦量收支 21 倍。

这便是为什么维表 join 的算子会产生背压,任务产出会蔓延。

那么天然,解决决议亦然有好多的。抛开 flink sql 想一下,若是我们使用 DataStream api,致使是在作念一个后端应用,需要考查外部存储时,常用的优化决议有哪些?这里列举一下:

按照 redis 维表的 key 分桶 + local cache:通过按照 key 分桶的格式,让大无数据的维表关联的数据考查走之前考查过得 local cache 即可。这么就不错把考查外部存储 2.1 ms 处理一个 query 变为考查内存的 0.1 ms 处理一个 query 的时长。

异设施查外存:DataStream api 有异步算子,不错利用线程池去同期屡次苦求维表外部存储。这么就不错把 2.1 ms 处理 1 个 query 变为 2.1 ms 处理 10 个 query。隐晦可变优化到 10 / 2.1 ms = 4761 qps。

批量考查外存:除了异设施查以外,我们还不错批量考查外部存储。举一个例子:在考查 redis 维表的 1 query 占用 2.1 ms 时长中,其中可能有 2 ms 齐是在聚积苦求上头的耗时 ,其中惟有 0.1 ms 是 redis server 处理苦求的时长。那么我们就不错使用 redis 提供的 pipeline 才略,在客户端(也便是 flink 任务 lookup join 算子中),攒一批数据,使用 pipeline 去同期考查 redis sever。这么就不错把 2.1 ms 处理 1 个 query 变为 7ms(2ms + 50 * 0.1ms) 处理 50 个 query。隐晦可变为 50 query / 7 ms = 7143 qps。博主这里测试了下使用 redis pipeline 和未使用的时长破费对比。如下图所示。

redis pipeline

www.monarchsportspro.com

博主觉得上述优化成果中,最佳用的是 1 + 3,2 比拟 3 一经一条一条发苦求,性能会差一些。

皇冠客服飞机:@seo3687

既然 DataStream 不错这么作念,flink sql 必须必的也不错鉴戒上头的这些优化决议。具体奈何操作呢?看下文骚操作

4.5.lookup join 的具体性能优化决议

按照 redis 维表的 key 分桶 + local cache:sql 中若是要作念分桶,得先作念 group by,但是若是作念了 group by 的团员,就只可在 udaf 中作念考查 redis 处理,何况 udaf 产出的适度只但是一条,是以这种竣事起来额外复杂。我们遴荐不作念 keyby 分桶。但是我们不错胜利使用 local cache 去作念土产货缓存,天然【胜利缓存】的成果比【先按照 key 分桶再作念缓存】的成果差,但是也能一定进度上减少考查 redis 压力。在博主竣事的 redis connector 中,内置了 local cache 的竣事,小伙伴萌不错参考底下这部篇著作进行树立。

异设施查外存:目下博主竣事的 redis connector 不支撑异设施查,但是官方竣事的 hbase connector 支撑这个功能,参考底下贯穿著作的,点开之后搜索 lookup.async。https://nightlies.apache.org/flink/flink-docs-release-1.13/docs/connectors/table/hbase/

批量考查外存:这玩意官方势必莫得竣事啊,但是,但是,但是,经由博主周末两天的狂妄 debug,改了改源码,处置了基于 redis 的批量考查外存优化的功能。

4.6.基于 redis connector 的批量考查机制优化

C盘D盘E盘有什么区别

先刻画一下粗略是个什么东西,具体奈何用。

你只需要在 StreamTableEnvironment 中的 table config 树立上 is.dim.batch.mode 为 true,sql 无须作念任何调动的情况下,flink lookup join 算子会自动优化,优化成果如下:

博彩网站

lookup join 算子的每个 task 上,每攒够 30 条数据 or 每隔五秒(处理本事) 去触发一次批量考查 redis 的苦求,使用的是 jedis client 的 pipeline 功能考查 redis server。实测性能有很大进步。

美高梅app里面有视频吗

对于这个批量考查机制的优化先容和使用格式先容,小伙伴们先别急,下篇著作会详确先容到。

5.转头与瞻望

源码公众号后台申诉1.13.2 sql lookup join获得。

本文主要先容了 flink sql lookup join 的使用格式,并先容了一些常常出现的性能问题以及优化想路,转头如下:

配景及应用场景先容:博主祈望你能了解到,flink sql 提供了随意考查外部存储的 lookup join(与上节不同,上节说的是流与流的 join)。lookup join 不错浅易调节为使用 flatmap 考查外部存储数据然后将维度字段拼接到刻下这条数据上头

zh皇冠体育如何注册

来一个实战案例:博主以曝光用户日记流关联用户画像(年事、性别)维表为例先容 lookup join 应该达到的关联的预期成果。

flink sql lookup join 的解决决议以及旨趣的先容:主要先容 lookup join 的在上述实战案例的 sql 写法,博主祈望你能了解到,lookup join 是基于处理本事的,何况 lookup join 常常会由于考查外部存储的 qps 过高而导致背压,产出蔓延等性能问题。我们不错鉴戒在 DataStream api 中的维表 join 优化想路在 flink sql 使用 local cache,异设施查维表,批量考查维表三种格式去解决性能问题。

 

9月21日,在山东省青岛市城阳区举行的“全国科普日”主场活动上,古镇小学的学生开心放飞救助的鹧鸪。

转头及瞻望:官方并莫得提供 批量考查维表 的才略,因此博主我方竣事了一套,具体使用格式和旨趣竣事敬请期待下篇著作。

 



上一篇:彩票色碟网站无法登录_2012年留守夫人有8个情夫, 激发一个情夫不悦, 丈夫: 我夫人被杀
下一篇:贝博骰宝博彩平台游戏代金券活动(www.exzentriker.net)

网友评论