[记录点滴] Spark迁移到Flink的几个点
[记录点滴] Spark迁移到Flink的几个点
0x00 三个问题点
有三个Spark API需要找到对应的Flink API或者替代方法
-
reduceByKeyAndWindow
函数reduceByKeyAndWindow(+,-,Seconds(3s),seconds(2)) 设计理念是,当 滑动窗口的时间Seconds(2) < Seconds(3)(窗口大小)时,两个统计的部分会有重复,那么我们就可以 不用重新获取或者计算,而是通过获取旧信息来更新新的信息,这样即节省了空间又节省了内容,并且效率也大幅提升。
-
groupByKey()
这个居然是用来去重:groupByKey().map( a => (a.1, a._2.head))
因为groupByKey的第二个参数就是列表,如果这个列表的元素都是相同的,则head操作就实际上起到了去重作用。
-
coalesce 如何替代
0x01 解决
reduceByKeyAndWindow
这个用 text.keyBy(0).timeWindow(start, end).reduce来完成
groupByKey()去重
这个用text.keyBy(0).timeWindow(start, end).sum(1).filter(x => {x!=null}).map(x => x._1)
其中sum..filter().map()就起到了去重
coalesce 如何替代
这个目前方法是使用setParallelism(n)来限定输出文件数目。如果是csv文件,可以再加上partitionByHash。或者可以再加上一个 rebalance。
wordCounts.partitionByHash(1).writeAsCsv("xxx").setParallelism(2);
text.writeAsText("xxx").setParallelism(2);
我的博客即将同步至腾讯云+社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan?invite_code=33pqkc4zbzy84
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· .NET10 - 预览版1新功能体验(一)