大家好,本文为 Flink Weekly 的第十四期,由李本超整理、云邪Review。主要内容包括:近期社区开发进展,邮件问题答疑以及 Flink 最新社区动态及技术文章推荐。 DEVRelease
Dian Fu 宣布 1.9.3 发布 http://apache-flink-mailing-list-archive.1008284.n3.nabble.com/ANNOUNCE-Apache-Flink-1-9-3-released-td40730.html Yu Li 发起了1.10.1 RC1 的投票 http://apache-flink-mailing-list-archive.1008284.n3.nabble.com/VOTE-Release-1-10-1-release-candidate-1-td40724.html Piotr Nowojski和Zhijiang 同步了一下1.11的开发进度 http://apache-flink-mailing-list-archive.1008284.n3.nabble.com/ANNOUNCE-Development-progress-of-Apache-Flink-1-11-td40718.html FLIP [table api] Xuannan Su 发起了 “FLIP-36 - 在Flink Table API中支持交互式编程” 的讨论,Becket Qin反馈了一些意见并进行了讨论 http://apache-flink-mailing-list-archive.1008284.n3.nabble.com/DISCUSS-FLIP-36-Support-Interactive-Programming-in-Flink-Table-API-td40592.html [table api] Dawid发起了FLIP-124的投票,FLIP-124旨在增强(反)序列化接口,增加open/close接口、支持返回多条数据等,投票已经通过 http://apache-flink-mailing-list-archive.1008284.n3.nabble.com/VOTE-FLIP-124-Add-open-close-and-Collector-to-De-SerializationSchema-td40318.html [table api] Aljoscha发起了FLIP-126的讨论,旨在简化watermark生成的逻辑,减少代码重复,并且能够做到per partition的idle检测。Timo认为这是个比较有用的feature http://apache-flink-mailing-list-archive.1008284.n3.nabble.com/DISCUSS-FLIP-126-Unify-and-separate-Watermark-Assigners-td40525.html [runtime] Yangze Guo宣布FLIP-118投票通过,FLIP-118旨在提升Flink内部的ID的可读性 http://apache-flink-mailing-list-archive.1008284.n3.nabble.com/RESULT-VOTE-FLIP-118-Improve-Flink-s-ID-System-td40553.html Discuss [doc] David Anderson 发起了将 http://training.ververica.com 的一些培训材料贡献到Flink社区的讨论,讨论通过,并且会将这些培训材料放到 https://github.com/apache/flink-training,并且在Jira中新建了一个”Documentation / Training“的component http://apache-flink-mailing-list-archive.1008284.n3.nabble.com/DISCUSS-Integration-of-training-materials-into-Apache-Flink-td40299.html [SQL] Konstantin发起了用DDL支持定义Temporal Table Function的讨论,大家比较认可这个需求,但是对于具体支持的方式发起了讨论,暂时还没有完全确定用哪种DDL方式来做 http://apache-flink-mailing-list-archive.1008284.n3.nabble.com/DISCUSS-FLINK-16824-Creating-Temporal-Table-Function-via-DDL-td40333.html [develop] Stephan Ewen发起了将1.11 Feature Freeze的时间延长半个月的讨论,大家都比较赞成,目前定于5月中旬为最终Feature Freeze的时间 http://apache-flink-mailing-list-archive.1008284.n3.nabble.com/DISCUSS-Exact-feature-freeze-date-td40624.html [state] Stephan Ewen发起了删除state中过时的方法的讨论,大家也都比较赞成,会在1.11中删除state中标记为过时的那些方法 http://apache-flink-mailing-list-archive.1008284.n3.nabble.com/DISCUSS-Removing-deprecated-state-methods-in-1-11-td40651.html [docker] Chesnay Schepler发起了将docker的开发放到每个flink版本的发布的讨论,David认为可以这样做 http://apache-flink-mailing-list-archive.1008284.n3.nabble.com/DISCUSS-Move-docker-development-into-versioned-branches-td40646.html [runtime] Robert Metzger发起了支持Hadoop 3以及删除flink-shaded-hadoop的讨论,大家比较支持这个提议,但是提出了一些潜在的问题,并进行了讨论 http://apache-flink-mailing-list-archive.1008284.n3.nabble.com/DISCUSS-Adding-support-for-Hadoop-3-and-removing-flink-shaded-hadoop-td40570.html [docker] Ismaël Mejía <http://apache-flink-mailing-list-archive.1008284.n3.nabble.com/template/NamlServlet.jtp?macro=user_nodes&user=383> 发起了是否可以在Flink正式release之外发布docker镜像的讨论,Chesnay Schepler认为可以发布,但是每次发布都需要有一个正式的发布流程 http://apache-flink-mailing-list-archive.1008284.n3.nabble.com/DISCUSS-Intermediary-releases-of-the-flink-docker-images-td40602.html [develop] Yangze Guo发起了关于带有max/min的配置的名字的讨论,目前多数人倾向于使用XXX.max/XXX.min这种形式 http://apache-flink-mailing-list-archive.1008284.n3.nabble.com/DISCUSS-Should-max-min-be-part-of-the-hierarchy-of-config-option-td40578.html Other [annonce] Hequn Cheng成为Flink PMC成员。恭喜军长~ http://apache-flink-mailing-list-archive.1008284.n3.nabble.com/ANNOUNCE-New-Apache-Flink-PMC-Member-Hequn-Chen-td40374.html USER Matyas 提问:如何在query或者view上定义watermark。Jark回答了他的问题,可以使用在1.11中的LIKE语法来在已有的Table上添加watermark定义;也可以用Table API将Table转成DataStream,然后用assignTimestampAndWatermark来重新定义watermark http://apache-flink-user-mailing-list-archive.2336050.n4.nabble.com/define-WATERMARKS-in-queries-views-td34610.html Lasse Nedergaard 提问:升级到1.10之后容易出现OOM的问题。Xintong和Stephan进行了解答,可能是因为native memory使用的比较多导致的。Zhhid Rahman也帮忙回答了一下问题,贴了一下Youtube链接的视频,但是Stephan不是很建议这样子来帮助用户解决问题。 http://apache-flink-user-mailing-list-archive.2336050.n4.nabble.com/Flink-1-10-Out-of-memory-td34406.html Oleg Vysotsky 提问:为什么时候Kafka Source的checkpoint size会到55GB。Yun Tang对问题进行了解答,最后定位是因为用户在切换Kafka和Kinesis Source的时候,用了同一个UUID,导致Source Operator的state变大,只要是在切换Source的时候用不同的UUID,就不会出现这个问题。 http://apache-flink-user-mailing-list-archive.2336050.n4.nabble.com/Checkpoints-for-kafka-source-sometimes-get-55-GB-size-instead-of-2-MB-and-flink-job-fails-during-rest-td34312.html Utopia 提问:关于日志里会报”类构造器没有默认的构造函数,所以不能用作POJO类型,只能用GenericType来处理”的信息。他用的是Scala的case class。Timo进行了解答,他应该是在Java API中使用了Scala的case class,如果是用Scala API就不应该会有这个问题。 http://apache-flink-user-mailing-list-archive.2336050.n4.nabble.com/Question-about-Scala-Case-Class-and-List-in-Flink-td32139.html Eyal Peer 提问:在使用StreamingFileSink+local filesystem的时候,在任务重启的时候无法恢复的问题。Dawid进行了解答,认为这是一种不正确的使用方式,这个是没法做到真正的Exactly-Once的,因为Flink重启的时候任务不会保证调度到之前同样的slot里,所以没法恢复。需要使用分布式文件系统,例如HDFS等。 http://apache-flink-user-mailing-list-archive.2336050.n4.nabble.com/Fault-tolerance-in-Flink-file-Sink-td34613.html Lu Niu 提问:checkpoint写入S3AFileSystem文件系统的时候报错。Congxian和Robert认为这个应该是文件系统本身的问题,不是Flink的问题。并且认为presto s3 filesystem是比较推荐的方式,并且建了一个Jira来跟踪StreamingFileSink支持presto s3 filesystem。 http://apache-flink-user-mailing-list-archive.2336050.n4.nabble.com/Checkpoint-Error-Because-quot-Could-not-find-any-valid-local-directory-for-s3ablock-0001-quot-td34138.html Vinay Patil 提问:如何避免两个流Join的时候发出重复的结果。Konstantin认为他可以使用Temporal Table Function的方式来做Join,这样可以避免重复输出的问题,但是如果用的是事件时间,并且一个流的输入很低频,会导致watermark前进的慢,输出有很大的延迟。用户最后选择自己用DataStream API自己去实现这个功能了。 http://apache-flink-user-mailing-list-archive.2336050.n4.nabble.com/Handling-stale-data-enrichment-td34617.html Flavio提问:是否有方法可以用参数来指定读取jdbc的时候的并行读取方式。Jingsong对此进行了回复并进行了讨论,认为这是个合理的场景,filter下推跟这个需求并不冲突,filter下推只能降低从source读取的数据量,但是没法定制并行读取的方法。Flavio建了三个Jira issue来跟踪这个问题。 http://apache-flink-user-mailing-list-archive.2336050.n4.nabble.com/JDBC-Table-and-parameters-provider-td34544.html Benchao Li 提问:是否有计划支持batch range sort的计划,Jingsong进行了回答。目前还缺少比较明确的应用场景来推动这个feature的落地。暂时先建了Jira issue来跟踪这件事。 http://apache-flink-user-mailing-list-archive.2336050.n4.nabble.com/batch-range-sort-support-td34600.html liujianggang 提问:使用UDAF的时候遇到checkpoint的时候会有序列化的问题。这个问题是由于在serializer.duplicate中有bug导致的,已经在FLINK-16242中修复 http://apache-flink-user-mailing-list-archive.2336050.n4.nabble.com/Blink-SQL-java-lang-ArrayIndexOutOfBoundsException-td34467.html seeksst 提问:升级到1.10后JSON_VALUE函数不能注册的问题,Jark和Danny进行了回答,是因为在Calcite中JSON_VALUE是直接hard code在parser中的,用户是无法注册一个同名函数来覆盖掉的,这个已经由Danny在Calcite社区去push解决了。 http://apache-flink-user-mailing-list-archive.2336050.n4.nabble.com/Flink-upgrade-to-1-10-function-td34366.html Gyula 提问:为什么Kafka Join Hive的时候为什么不能保留Kafka流的时间属性。Kurt和Timo对此进行了回答,因为现在还没有办法在streaming模式下区分一个source是否是bounded,而且join的时候可能会有join到一个比较老的数据的情况,所以当前不能有时间属性参与regular join。 http://apache-flink-user-mailing-list-archive.2336050.n4.nabble.com/Joining-table-with-row-attribute-against-an-enrichment-table-td34464.html dingxingxing 提问:为什么两层group by的时候,输出的结果会忽大忽小。Benchao Li对此进行了回答,因为group by会输出retract结果,所以如果是两层的话,就会导致下游的group by会放大这个retract的影响,导致会短暂输出老的结果。Jark认为可以用mini batch来缓解一下这个问题。 http://apache-flink-user-mailing-list-archive.2336050.n4.nabble.com/Flink-streaming-sql-group-by-td34412.html lec ssmi 提问:关于Flink SQL中的retract机制,Benchao Li对retract机制进行了解答。当前官方文档中的确是缺少这块内容的介绍,已经创建了一个Jira issue FLINK-17343来跟踪这个事情。 http://apache-flink.147419.n8.nabble.com/retract-td2672.html 宇张提问:为什么找不到正确的SourceTableFactory,Jingsong和tison进行了解答,原因是现在TableFactory是采用SPI加载的,这就涉及到用户在打包的时候,是否把正确的SPI配置文件打包、是否处理好了多个TableFactory的时候的冲突问题。这个一般在打shade包的时候,需要特殊配置一下shade插件,使用起来不是特别友好。 http://apache-flink.147419.n8.nabble.com/Flink1-10-Standalone-td2650.html 酷酷的混蛋提问:关于Flink SQL中的state的TTL的处理的原理,Benchao Li进行了解答。在之前的确是有些设置不合理,首先在1.9.3之前没有开启state的background清理,可能会导致有些state到期了仍然没有被清理,这个会在1.9.3以及1.10以后可以解决;第二个问题是之前使用的过期策略是允许读到过期但是没有清理的数据,这个行为会在1.11中修改成不允许读到过期的数据的策略。 http://apache-flink.147419.n8.nabble.com/TTL-td2482.html 博客&文章 1.10中内存管理的改进 https://flink.apache.org/news/2020/04/21/memory-management-improvements-flink-1.10.html Flink序列化调优(一):如何选择Serializer https://flink.apache.org/news/2020/04/15/flink-serialization-tuning-vol-1.html Stateful Functions在有状态的无服务应用中的使用 https://www.ververica.com/blog/session-preview-stateful-functions-for-stateful-serverless-applications Adobe基于Flink实现实时身份图谱 https://www.ververica.com/blog/adobe-realtime-identity-graph-with-flink Flink消息聚合处理方案-微博 https://ververica.cn/corporate_practice/flink-message-aggregation-processing-scheme/ -- Benchao Li School of Electronics Engineering and Computer Science, Peking University Tel:+86-15650713730 Email: [email protected]; [email protected]
