前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >[记录点滴] Spark迁移到Flink的几个点

[记录点滴] Spark迁移到Flink的几个点

作者头像
罗西的思考
发布2020-09-07 16:49:57
6470
发布2020-09-07 16:49:57
举报
文章被收录于专栏:罗西的思考罗西的思考

[记录点滴] 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。

代码语言:javascript
复制
wordCounts.partitionByHash(1).writeAsCsv("xxx").setParallelism(2);
text.writeAsText("xxx").setParallelism(2);
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-09-04 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • [记录点滴] Spark迁移到Flink的几个点
    • 0x00 三个问题点
      • 0x01 解决
        • reduceByKeyAndWindow
        • groupByKey()去重
        • coalesce 如何替代
    相关产品与服务
    大数据
    全栈大数据产品,面向海量数据场景,帮助您 “智理无数,心中有数”!
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档