Apache Flink
文章平均质量分 53
flink的学习和使用
菜到抠脚的cxy
wx:chenxuying2222
展开
-
flink集群各种部署方式
flink部署方式无资源管理standalone原生无平台Session Mode# (1) Start Cluster$ ./bin/start-cluster.sh# (2) You can now access the Flink Web Interface on http://localhost:8081# (3) Submit example job$ ./bin/flink run ./examples/streaming/TopSpeedWindowing.jar# (4)原创 2021-04-28 18:10:04 · 743 阅读 · 0 评论 -
flink1.12 kafka升级记录
在1.12之前的做法在1.12之前 flinksql是不支持kafka 多个topic的设置, 所以之前使用的时候简单对官方kafka连接器中kafkaDynamicSource进行封装,让其支持多个topic的设置对应文章是1.11.0 flinksql自定义kafka源(支持多个topic)现在1.12版本中, kafka做了一些改动,如下1.12多topic的支持(源码调试查看)比如KafkaOptions中TOPIC的类型是List<String>分隔符是原创 2020-12-19 15:34:46 · 1038 阅读 · 1 评论 -
1.11 flink读取本地文件例子以及细节
两个细节可以指定文件或目录 可以指定读取模式一次性或持续性检测代码例子PROCESS_ONCE模式public class FileToPrint { public static void main(final String[] args) throws Exception { StreamExecutionEnvironment streamEnv = StreamExecutionEnvironment.getExecutionEnvironment();原创 2020-11-21 13:44:19 · 3103 阅读 · 5 评论 -
1.11 flinksql自定义redis connector 连接器
Flink Stream ApiApache Bahir已经实现了redis对应的连接器Flink streaming connector for Redismaven仓库如下<dependency> <groupId>org.apache.bahir</groupId> <artifactId>flink-connector-redis_2.11</artifactId> <version&g.原创 2020-10-20 23:33:23 · 3319 阅读 · 34 评论 -
1.11 flink中的动态加载udf jar包
背景项目中想要把flink做到平台化,只需要编辑sql便能把任务跑起来,开发过程中遇到一个问题,就是如何能够自动的加载自定义的函数包,因为项目中已经把main打包成一个通用的jar, 使用时只需要把sql信息用参数形式传入就可以. 但是如果sql中需要使用到udf,那么就需要实现flink的动态加载jar先说结论在通用的jar main中通过反射使用类加载器,加载对应的jar包 通过反射设置StreamExecutionEnvironment中的configuration的confData中的原创 2020-10-16 18:13:33 · 3722 阅读 · 1 评论 -
1.11.2 flinksql自定义sls connector 连接器
背景需要连接阿里日志服务sls,获取日志阿里提供了对应的flink-log-connector阿里云文档不过他提供的是flink stream api, 我们需要使用flinksql, 所以需要自定义编写对应的table soruce注意flink-log-connector一次获取的是多条日志格式RawLogGroupList, 想要更好的结合flinksql还可能需要去修改对应的源码编码format编写一个处理格式处理器SlsFormatFactory...原创 2020-09-29 11:52:20 · 1684 阅读 · 10 评论 -
孙金城视频总结(5)_flink流计算语义
flink流计算语义at-most-once至多一次 at-least-once至少一次 exactly-once精准一次语义基于快照,快照基于状态state,状态基于状态后端statebackendstate分为两种public interface ManagedInitializationContext { boolean isRestored(); OperatorStateStore getOperatorStateStore(); KeyedStateStore原创 2020-09-11 20:51:49 · 230 阅读 · 0 评论 -
孙金城视频总结(4)_flink流计算容错重启Source与Checkpoint
之前例子中存在的问题在之前的例子中,使用了checkpoint,虽然异常重启后可以继续失败前sum值继续运算,但是数据源的消费位置是从头开始,这不是我们想要的,要实现重启后消费位置offset是继重启前的offset,那么需要source端有支持MySourcepublic class MySource implements SourceFunction<Tuple3<String, Long, Long>> , CheckpointedFunction { .原创 2020-09-10 11:44:24 · 382 阅读 · 0 评论 -
孙金城视频总结(3)_flink流计算容错重启策略与Checkpoint,Savepoint结合
1 启用Checkpointing实现job异常重启后继续上次状态public class EnableCheckpointForFailover { public static void main(String[] args) throws Exception { StreamExecutionEnvironment streamEnv = StreamExecutionEnvironment.getExecutionEnvironment(); // 1原创 2020-09-09 19:20:15 · 226 阅读 · 0 评论 -
孙金城视频总结(2)_flink流计算容错重启策略
noRestartflink默认,不会重启public static void main(String[] args) throws Exception { StreamExecutionEnvironment streamEnv = StreamExecutionEnvironment.getExecutionEnvironment(); streamEnv.setRestartStrategy(RestartStrategies.noRestart());//默原创 2020-09-09 16:30:02 · 121 阅读 · 0 评论 -
孙金城视频总结(1)_flink状态后端statebackend管理,容错以及升级程序注意事项
Flink-StateBackend视频地址MemoryStateBackend特点 基于JVM堆内存,会有oom风险(TM,JM) 持久化时,State网络传输到JM机器,同样存在JM的内存中 适用 开发测试 状态小的流计算场景,比如比如只包含数据过滤和转换以及数据源的消费位置 FsStateBackend特点 基于JVM堆内存,会有oom风险(TM) 持久化时,State存在TM的文件系统,只传输文件名和文件目录传输到JM 适用 大状态(前提是TM分摊原创 2020-09-08 21:29:45 · 209 阅读 · 1 评论 -
1.11.0 flinksql自定义oss connector 连接器
在tablesql中连接oss,暂时没找到线程的连接器,所以自己实现一个,根据阿里云oss的sdk进行读取数据和写数据到oss代码结构OssDynamicTableFactoryimport org.apache.flink.api.common.serialization.DeserializationSchema;import org.apache.flink.api.common.serialization.SerializationSchema;import org.apac.原创 2020-08-06 13:47:04 · 1867 阅读 · 9 评论 -
1.11.0 pyflink Vectorized udf自定义向量函数
特点Vectorized Python scalar functions takepandas.Seriesas the inputs and return apandas.Seriesof the same length as the output.参数是df.series类型 , 输出也是 , 输入行数和输出行数相同from pyflink.datastream import StreamExecutionEnvironmentfrom pyflink.table import ...原创 2020-07-30 10:19:05 · 813 阅读 · 0 评论 -
1.11.0 pyflink udtf自定义函数
官网地址https://ci.apache.org/projects/flink/flink-docs-release-1.11/dev/table/python/python_udfs.htmlfrom pyflink.datastream import StreamExecutionEnvironmentfrom pyflink.table import StreamTableEnvironment, DataTypesfrom pyflink.table.descriptors impor.原创 2020-07-29 19:43:17 · 1147 阅读 · 0 评论 -
1.11.0 pyflink中使用udf例子,多种方式实现
官网对应地址:https://ci.apache.org/projects/flink/flink-docs-release-1.11/dev/table/python/python_udfs.htmlfrom pyflink.datastream import StreamExecutionEnvironmentfrom pyflink.table import StreamTableEnvironment, DataTypes, ScalarFunctionfrom pyflink.tabl.原创 2020-07-29 16:02:32 · 1458 阅读 · 0 评论 -
1.11.0 flinksql自定义kafka源(支持多个topic)
目前flink 1.11.0还不支持多个topic的kafka连接器 , 要实现这个功能需要自定义源,这里是基于已有的kafka connector<dependency> <groupId>org.apache.flink</groupId> <artifactId>flink-connector-kafka_2.11</artifactId> <version>1.11.0</version&g原创 2020-07-27 20:23:40 · 2859 阅读 · 4 评论 -
1.11.0 pyflink使用例子
官网链接https://ci.apache.org/projects/flink/flink-docs-release-1.11/dev/table/python/python版本要求3.5及以上安装pyflinkpython -m pip install apache-flink如果安装下载太慢会time-out, 换pip源代码table_api方式from pyflink.datastream import StreamExecutionEnvironmentf.原创 2020-07-21 17:12:34 · 2913 阅读 · 9 评论 -
flink sql使用注意事项
可以通过create 语句控制字段个数和顺序 , 决定后面insert into的select语句中的字段顺序受影响,所以insert into的select只能跟create定义的顺序一样,不能改别名 例如create table mysink (id varchar ,name varchar) with(...) 不可以通过insert 或select语句控制输出个数 insert into mysink (id ,name ) select * from source是错误的 inser原创 2020-07-07 20:02:00 · 2815 阅读 · 0 评论 -
flink kafka source使用注意事项
kafka_source(consumer)setStartFromLatest Flink从topic中最新的数据开始消费,不管哪个消费者是否同个消费组 如果设置了保存点,则会记录自己的offect,不管其他的消费者是否消费了 setStartFromGroupOffsets 必须配置group.id参数 启动会获取最新的groupid对应的offect 如果同个groupid其他的消费者消费了,则flink会忽略期间的数据 如果flink消费了数据则会更新groupid对应原创 2020-07-07 19:59:02 · 1321 阅读 · 0 评论