草庐IT

字节跳动使用 Flink State 的经验分享

本文主要分享字节跳动在使用FlinkState上的实践经验,内容包括FlinkState相关实践以及部分字节内部在引擎上的优化,希望可以给Flink用户的开发及调优提供一些借鉴意义。前言Flink作业需要借助State来完成聚合、Join等有状态的计算任务,而State也一直都是作业调优的一个重点。目前State和Checkpoint已经在字节跳动内部被广泛使用,业务层面上State支持了数据集成、实时数仓、特征计算、样本拼接等典型场景;作业类型上支持了Map-Only类型的通道任务、ETL任务,窗口聚合计算的指标统计任务,多流Join等存储数据明细的数据拼接任务。以WordCount为例,假

Flink写入Redis集群 重写flink-connector-redis包,解决Cluster无法输入密码问题

起因:使用flink的时候难免和redis打交道,相信大家都使用过flink-connector-redis来处理,但是当我想要使用RedisSink写入集群时,发现居然不支持使用密码,于是有了这篇笔记。 事情的经过是这样的,我准备用Flink往Redis写入数据,我照常引入flink-connector-redis包dependency>groupId>org.apache.flinkgroupId>artifactId>flink-connector-redis_2.11artifactId>version>1.1.5version>dependency>然后洋洋洒洒写下如下代码:pack

Flink写入Redis集群 重写flink-connector-redis包,解决Cluster无法输入密码问题

起因:使用flink的时候难免和redis打交道,相信大家都使用过flink-connector-redis来处理,但是当我想要使用RedisSink写入集群时,发现居然不支持使用密码,于是有了这篇笔记。 事情的经过是这样的,我准备用Flink往Redis写入数据,我照常引入flink-connector-redis包dependency>groupId>org.apache.flinkgroupId>artifactId>flink-connector-redis_2.11artifactId>version>1.1.5version>dependency>然后洋洋洒洒写下如下代码:pack

Flink-出租车-基于 DataStream API 计算每小时赚取最多小费的司机

案例来源https://github.com/apache/flink-training/blob/release-1.14/hourly-tips/README_zh.md案例介绍基于出租车付费事件流计算出每小时赚取最多小费的司机,最简单的方法是通过两个步骤来解决这个问题:首先使用一个小时长的窗口来计算每个司机在一小时内的总小费,然后从该窗口结果流中找到每小时总小费最多的司机。结果输出:每小时产生一个HourlyTip对象记录的数据流。这个记录应包含该小时结束时的时间戳、该小时内获得小费最多的司机的driverId以及他的实际小费总数。publicclassHourlyTip{/***小时结

Flink-出租车-基于 DataStream API 计算每小时赚取最多小费的司机

案例来源https://github.com/apache/flink-training/blob/release-1.14/hourly-tips/README_zh.md案例介绍基于出租车付费事件流计算出每小时赚取最多小费的司机,最简单的方法是通过两个步骤来解决这个问题:首先使用一个小时长的窗口来计算每个司机在一小时内的总小费,然后从该窗口结果流中找到每小时总小费最多的司机。结果输出:每小时产生一个HourlyTip对象记录的数据流。这个记录应包含该小时结束时的时间戳、该小时内获得小费最多的司机的driverId以及他的实际小费总数。publicclassHourlyTip{/***小时结

Flink-出租车-车程事件流和付车费事件流connect

案例来源:https://github.com/apache/flink-training/blob/release-1.14/README_zh.md案例背景出租车车程(taxiride)事件结构1.每次车程都由两个事件表示:行程开始(tripstart)和行程结束(tripend)。2.每个事件都由十一个字段组成:rideId:Long//每次车程的唯一idtaxiId:Long//每一辆出租车的唯一iddriverId:Long//每一位司机的唯一idisStart:Boolean//行程开始事件为TRUE,行程结束事件为FALSEeventTime:Long//事件的时间戳startL

Flink-出租车-车程事件流和付车费事件流connect

案例来源:https://github.com/apache/flink-training/blob/release-1.14/README_zh.md案例背景出租车车程(taxiride)事件结构1.每次车程都由两个事件表示:行程开始(tripstart)和行程结束(tripend)。2.每个事件都由十一个字段组成:rideId:Long//每次车程的唯一idtaxiId:Long//每一辆出租车的唯一iddriverId:Long//每一位司机的唯一idisStart:Boolean//行程开始事件为TRUE,行程结束事件为FALSEeventTime:Long//事件的时间戳startL

Flink-基于 DataStream API 实现欺诈检测

案例来源于https://nightlies.apache.org/flink/flink-docs-release-1.14/docs/try-flink/datastream/案例背景在当今数字时代,信用卡欺诈行为越来越被重视。罪犯可以通过诈骗或者入侵安全级别较低系统来盗窃信用卡卡号。用盗得的信用卡进行很小额度的例如一美元或者更小额度的消费进行测试。如果测试消费成功,那么他们就会用这个信用卡进行大笔消费,来购买一些他们希望得到的,或者可以倒卖的财物。在这个教程中,你将会建立一个针对可疑信用卡交易行为的反欺诈检测系统。通过使用一组简单的规则,你将了解到Flink如何为我们实现复杂业务逻辑并实

Flink-基于 DataStream API 实现欺诈检测

案例来源于https://nightlies.apache.org/flink/flink-docs-release-1.14/docs/try-flink/datastream/案例背景在当今数字时代,信用卡欺诈行为越来越被重视。罪犯可以通过诈骗或者入侵安全级别较低系统来盗窃信用卡卡号。用盗得的信用卡进行很小额度的例如一美元或者更小额度的消费进行测试。如果测试消费成功,那么他们就会用这个信用卡进行大笔消费,来购买一些他们希望得到的,或者可以倒卖的财物。在这个教程中,你将会建立一个针对可疑信用卡交易行为的反欺诈检测系统。通过使用一组简单的规则,你将了解到Flink如何为我们实现复杂业务逻辑并实

开源直播课丨大数据集成框架ChunJun类加载器隔离方案探索及实践

本期我们带大家回顾一下无倦同学的直播分享《ChunJun类加载器隔离》,ChunJun类加载器隔离的方案是我们近期探索的一个新方案,这个方案目前还不是非常成熟,希望能借由此次分享与大家一起探讨下这方案,如果大家有一些新的想法欢迎大家在github上给我提issue或者pr。一、Java类加载器解决类冲突基本思想在学习方案之前,首先为大家介绍一下Java类加载器解决类冲突的基本思想。01什么是Classpath?Classpath是JVM用到的一个环境变量,它用来指示JVM如何搜索Class。因为Java是编译型语言,源码文件是.java,而编译后的.class文件才是真正可以被JVM执行的字节