大数据Flink进阶(七):Flink批和流案例总结-世界观速讯
在Flink批处理过程中不需要执行execute触发执行,在流式处理过程中需要执行env execute触发程序执行。
关于Flink 批数据处理和流式数据处理案例有以下几个点需要注意:
(资料图片仅供参考)
编写Flink代码要符合一定的流程,Flink代码编写流程如下:
a. 获取flink的执行环境,批和流不同,Execution Environment。b. 加载数据数据-- soure。c. 对加载的数据进行转换-- transformation。d. 对结果进行保存或者打印-- sink。e. 触发flink程序的执行 --env.execute()
在Flink批处理过程中不需要执行execute触发执行,在流式处理过程中需要执行env.execute触发程序执行。
创建Flink批和流上下文环境有以下三种方式,批处理上下文创建环境如下:
//设置Flink运行环境,如果在本地启动则创建本地环境,如果是在集群中启动,则创建集群环境ExecutionEnvironment env = ExecutionEnvironment.getExecutionEnvironment();//指定并行度创建本地环境LocalEnvironment localEnv = ExecutionEnvironment.createLocalEnvironment(10);//指定远程JobManagerIp 和RPC 端口以及运行程序所在Jar包及其依赖包ExecutionEnvironment remoteEnv = ExecutionEnvironment.createRemoteEnvironment("JobManagerHost", 6021, 5, "application.jar");
流处理上下文创建环境如下:
//设置Flink运行环境,如果在本地启动则创建本地环境,如果是在集群中启动,则创建集群环境StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();//指定并行度创建本地环境LocalStreamEnvironment localEnv = StreamExecutionEnvironment.createLocalEnvironment(5);//指定远程JobManagerIp 和RPC 端口以及运行程序所在Jar包及其依赖包StreamExecutionEnvironment remoteEnv = StreamExecutionEnvironment.createRemoteEnvironment("JobManagerHost", 6021, 5, "application.jar");
同样在Scala api 中批和流创建Flink 上下文环境也有以上三种方式,在实际开发中建议批处理使用"ExecutionEnvironment.getExecutionEnvironment()"方式创建。流处理使用"StreamExecutionEnvironment.getExecution-Environment()"方式创建。
在编写Flink Java api代码和Flink Scala api代码处理批或者流数据时,引入的ExecutionEnvironment或StreamExecutionEnvironment包不同,在编写代码时导入错误的包会导致编程有问题。
批处理不同API引入ExecutionEnvironment如下:
//Flink Java api 引入的包import org.apache.flink.api.java.ExecutionEnvironment;//Flink Scala api 引入的包import org.apache.flink.api.scala.ExecutionEnvironment
流处理不同API引入StreamExecutionEnvironment如下:
//Flink Java api 引入的包import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment;//Flink Scala api 引入的包import org.apache.flink.streaming.api.scala.StreamExecutionEnvironment
在Flink Java api中创建Tuple2时,可以通过new Tuple2方式也可以通过Tuple2.of方式,两者本质一样。
在Flink Scala api中批处理和流处理代码编写过程中需要导入对应的隐式转换来推断函数操作后的类型,在批和流中导入隐式转换不同,具体如下:
//Scala 批处理导入隐式转换,使用Scala API 时需要隐式转换来推断函数操作后的类型import org.apache.flink.api.scala._//Scala 流处理导入隐式转换,使用Scala API 时需要隐式转换来推断函数操作后的类型import org.apache.flink.streaming.api.scala._
Flink Java api中可以使用Lambda表达式,当涉及到使用泛型Java会擦除泛型类型信息,需要最后调用returns方法指定类型,明确声明类型,告诉系统函数生成的数据集或者数据流的类型。
批和流处理中都是通过readTextFile来读取数据文件,对数据进行转换处理后,Flink批处理过程中通过groupBy指定按照什么规则进行数据分组,groupBy中可以根据字段位置指定key(例如:groupBy(0)),如果数据是POJO自定义类型也可以根据字段名称指定key(例如:groupBy("name")),对于复杂的数据类型也可以通过定义key的选择器KeySelector来实现分组的key。
Flink流处理过程中通过keyBy指定按照什么规则进行数据分组,keyBy中也有以上三种方式指定分组key,建议使用通过KeySelector来选择key,其他方式已经过时。
Flink架构可以处理批和流,Flink 批处理数据需要使用到Flink中的DataSet API,此API 主要是支持Flink针对批数据进行操作,本质上Flink处理批数据也是看成一种特殊的流处理(有界流),所以没有必要分成批和流两套API,从Flink1.12版本往后,Dataset API 已经标记为Legacy(已过时),已被官方软弃用,官方建议使用Table API 或者SQL 来处理批数据,我们也可以使用带有Batch执行模式的DataStream API来处理批数据,在未来Flink版本中DataSet API 将会被删除。关于这些API 具体使用后续文章会进行讲解。
关于Flink集群提交任务及Flink flink-conf.yaml配置文件在下个章节集群搭建会进行介绍。
关键词:
[ 相关文章 ]
在Flink批处理过程中不需要执行execute触发执行,在流式处理过程中需要执行env execute触发程序执行。
1、工资与社保的有关分录可以分为两步:第一步计提工资与社保时:借:管理费用 销售费用 制造费用(依据员工工作性质决定)
本报记者李乔宇3月29日,金隅集团披露2022年年度报告。公告显示,金隅集团2022年实现营业收入1028 22亿元,同比减少16 83%;实现归属于上
不知道大家有没有听说过Valorant无畏契约该游戏,这款游戏是由腾讯还有拳头公司一起合作的一款游戏,该游戏是一款射击游戏,现在已经正式发布
一、欠薪农民工问题?欠薪农民工问题如下:1 对于这种违法行为,最简单的方法是电话投诉到当地劳动执法监察大队,他们会依据《
每经AI快讯,有投资者在投资者互动平台提问:今年以来,各负极厂商开工意愿不强,需求下跌,负极材料也是在打价格战,产能过剩,公司年产5 5万
海普瑞2022年净利7 3亿增202%经营现金流净额-7 6亿
今年二月终于盼到《黑豹2》上映,许久不见的漫威系列电影总算回归内地市场。在影院看过后,作为漫威影迷立刻回忆起了有关漫威的点点滴滴。我有
作者|JulianLin编译|美股研究社01、概述苹果(NASDAQ:AAPL)股价自大流行以来以及在过去几年
近日,公司2023年度第一期碳排放权资产担保债务融资工具(碳中和债 专项乡村振兴 革命老区)在银行间市场成功发行,注册额度10亿元,首单发行
(人民日报健康客户端记者张爽杨晓露)近日,不少网友反映,目前乘坐地铁时即使忘记佩戴口罩也不会遭遇工作人员阻拦,可以正常进出站乘坐地铁
一到考试结束,我便总会出去,置身于称得上是雨雪的雪中,用双手去留住雪花,但都是无用功,在掌心里它只会融化得更快。这时我竟有了些许落寞
1、你好 TemplarArchives(圣堂武士档案馆)可研究圣堂武士的1闪电风暴和2幻觉及3魔法上限(提高5
没有!暴涨330%超级牛股,最新回应!,海天,微软,瑞声,人工智能,上市公司,埃隆_马斯克
当地时间3月29日,正在对扎波罗热核电站进行访问的国际原子能机构总干事格罗西表示,该核电站的周边状况未得到改善,附近的军事活动正在加强。
男子自如租房第1天发现白蚁成群:客服回应
截至2023年3月29日收盘,银都股份(603277)报收于19 66元,下跌1 01%,换手率0 28%,成交量1 18万手,成交额2315 39万元。
丰城控股发布公告称,截至2022年12月31日止年度,公司收入大幅减少至约1 92亿港元,减幅约34 6%。年内溢利及全面收益总额约为1450万港元,同比大幅减
白萝卜是冬天的应季食材,冬天吃再适合不过了。白萝卜的维生素和纤维素很丰富,常吃可以帮助肠胃的消化和吸收,而且还能让皮肤更加水润。白萝
观点网讯:3月29日,香港财经事务及库务局局长许正宇在立法会大会上表示,政府与各金融监管机构一直密切关注近期美国多间银行被接管的事态发展
[ 相关新闻 ]
Copyright 2015-2022 大众医院网 版权所有 备案号:豫ICP备20014643号-14 联系邮箱: 905 14 41 07@qq.com