大数据Flink进阶(七):Flink批和流案例总结 即时看
Flink批和流案例总结
关于Flink 批数据处理和流式数据处理案例有以下几个点需要注意:
一、Flink程序编写流程总结
编写Flink代码要符合一定的流程,Flink代码编写流程如下:
(资料图)
a. 获取flink的执行环境,批和流不同,Execution Environment。b. 加载数据数据-- soure。c. 对加载的数据进行转换-- transformation。d. 对结果进行保存或者打印-- sink。e. 触发flink程序的执行 --env.execute()
在Flink批处理过程中不需要执行execute触发执行,在流式处理过程中需要执行env.execute触发程序执行。
二、关于Flink的批处理和流处理上下文环境
创建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 和Scala导入包不同
在编写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中创建 Tuple方式
在Flink Java api中创建Tuple2时,可以通过new Tuple2方式也可以通过Tuple2.of方式,两者本质一样。
五、Flink Scala api需要导入隐式转换
在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 中的returns 方法
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,其他方式已经过时。
八、关于DataSet Api(Legacy)软弃用
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进阶(七):Flink批和流案例总结 即时看
在Flink批处理过程中不需要执行execute触发执行,在流式处理过程中需要执行env execute触发程序执行。
2023江西九江永修县人民法院招聘临聘人员公告(1人)
因工作需要,经研究,永修县人民法院决定招聘临聘人员司机1名。一、司机招聘条件1 具有良好的政治素质和道德品行;2 持有驾驶证C照以上,驾驶
环球关注:福彩3D第2023079期神算天五行和值胆码图
福彩3D2023079期上期回顾:福彩3D第2023078期开出奖号为856。[扫码下载app,中过数字彩1千万以上的专家都在这儿!]
每日头条!“特色经济”比拼 如何拼出特色?
“特色经济”比拼如何拼出特色?---即将过去的3月份是“全国消费促进月”,各地拼起了“特色经济”,带动消费复苏、市场回暖。接下来我们就...
广汽冯兴亚:今年挑战同比增长10%的销量目标
财经网汽车讯3月30日,据新浪汽车消息,广汽集团总经理冯兴亚在业绩会表示,2023年行业形势变化非常剧烈,特别是近期的降价潮。对于企业而言,
全球新资讯:勉县法院举办新任人民陪审员工作培训会
3月29日下午,勉县法院举办人民陪审员工作培训会,新任命的24名陪审员参加本次会议。培训会由勉县法院党组成员、副院长、四
【世界新视野】谷歌重组虚拟助理部门 更多专注人工智能聊天技术Bard
谷歌在报告结构中计划重组其虚拟助理部门(称为Assistant),以更多地关注公司新的人工智能聊天技术Bard。据悉GoogleAssistant是一种人工
15000多名经销商观众涌入老国展,“最好吃”的展会让人流连忘返 快资讯
香浓美味的榴莲奶糕、酥脆甜筒、水蜜桃冰淇淋,手工包的鲅鱼馅饺子……昨天,2023北京全球高端食品展览会、中国冰淇淋冷食展览会暨北京运动...
小米3可拆卸电池_小米3电池可拆卸吗 焦点短讯
之前很多朋友认为市面上小米和iphone的区别就是电池可以更换。一款新的小米3推出后,关于小米电池能否更换的消息也是五花
心通医疗-B(02160.HK)年度收入同比增加25.0%至2.51亿元-每日速看
格隆汇3月29日丨心通医疗-B(02160 HK)公告,截至2022年12月31日止年度,集团收入同比增加25 0%至人民币2 51亿元,主要是由于公司的TAV
卓越亚马逊网官网_卓越亚马逊网上图书商城
1、亚马逊卓越网值得相赖。2、卓越亚马逊,中国最大最全的网上综合商城,以销售图书、音像制品为主,近100万种商品在线热销
SSD性能狂飙 追赶DDR5内存 PCIe 6.0硬盘预计2026年问世
2021年底的12代酷睿就率先支持了PCIe5 0,去年AMD的锐龙7000也加编程客栈入了,至此PCIe5 0生态的硬件基础没问题了,就是PCIe编程客栈
《生化危机4:重制版》阿什莉服装Mod 黑色性感内衣诱人
《生化危机4重制版》已正式发售,上了PC穿什么就由不得阿什莉了。近日Mod作者ShinyRose制作了阿什莉黑色性感内衣Mod,看起来非常诱人!Mod下载
【世界聚看点】csgo新手开箱容易出金吗 10大最真实的csgo开箱网站
,很多喜欢csgo的伙伴都在寻找可靠的国内开箱网站。毕竟,如果能从箱子里打开昂贵的首饰,那就太爽了
当前视点!广东中山报告1例H3N8禽流感病例
根据广东省疾病预防控制中心消息,广东省中山市报告1例H3N8病例,病例为女性,56岁,既往有多发性骨髓瘤等基础病史,发病前有活禽暴露史,家周
全球聚焦:三种违建不拆违法吗_三种违建可不拆
1、违章建筑,是指在城市规划区内,未取得建设工程规划许可证或违反建筑工程规划许可证的规定建设的,或采取欺骗手段骗取批准而
年薪最高可达70万元 贵阳高新区春季促就业提供岗位1440个 环球新要闻
3月27日,在贵州省2023年春季促就业攻坚行动暨贵阳贵安“筑人才·强省会”高校毕业生就业创业行动启动仪式上,贵阳高新区
言冰云妆化拉低肖战颜值,身形单薄瘦成纸片人
在大家的期待之下,之前自闻其名未见其人的言冰云已经顺利上线。令大家失望的是,跟魏无羡的明媚俊朗不同,言冰云整体给人的印象相当寡淡,被
北京地铁新增20余处“早餐车”,还能买到小笼包和南瓜粥|快播报
最近乘坐地铁的乘客,发现多座地铁站内都出现了便民餐车,乘客可以买到品类丰富、营养健康的中西式简餐,除了汉堡咖啡三明治,甚至还有小笼包
总投资837亿元!兵器工业集团精细化工及原料工程项目在盘锦开工 世界看点
人民网盘锦3月29日电 (汤龙)3月29日上午,中沙两国携手共建的精细化工及原料工程项目在辽宁省盘锦市辽滨沿海经济技术开发区正式开工。开工
青岛城投金控15亿元公司债将付息 品种一利率4.08%、品种二利率4.50%-天天头条
3月29日,青岛城投金融控股集团有限公司发布2022年面向专业投资者公开发行可续期公司债券(第一期)(品种一)2023年付息公告和2022年面向专业
中国电科14所与中国民航华东地区空管局签署战略合作协议
App3月29日消息,近日,中国电科14所与中国民用航空华东地区空中交通管理局签署战略合作协议。双方就目前相关业务的痛点、难点进行充分沟通。1
产假期间工资如何发放2022|全球时快讯
女职工怀孕的话,一般情况下用人单位是不允许将其辞退的,当然有特殊情况的话,那么还是可以辞退怀孕女职工。那么,产假期间工资如何发放2022
行尸走肉第五季剧透_行尸走肉第四季剧透 环球微动态
1、《行尸走肉》第四季剧情:瑞克一行人将伍德贝瑞的幸存者接到监狱平安地度过了几个月,并重建了监狱文明。到平静的生活被一种
世界新动态:3月28日基金净值:华安产业精选混合A最新净值0.9901,跌0.96%
3月28日,华安产业精选混合A最新单位净值为0 9901元,累计净值为0 9901元,较前一交易日下跌0 96%。历史数据显示该基金近1个月下跌6 2%,近3个