zoukankan      html  css  js  c++  java
  • [记录点滴] 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

  • 相关阅读:
    java-se 选择和冒泡排序
    获得最大数
    打印正反星星 先正后反星星
    Django链接MySQL,数据库迁移
    ORM常用字段及查询
    Django的View(视图)
    Pycharm设置默认HTML模板
    Django简介
    Django
    如何使用Python输出一个[斐波那契数列]
  • 原文地址:https://www.cnblogs.com/rossiXYZ/p/13172145.html
Copyright © 2011-2022 走看看