Flink特点与Spark的比较

Flink特点:

  1. 重要特点:

    1.1事件驱动型,是具有状态的应用,从事件流中提取数据,并根据时间来触发计算、更新状态或其他操作。SparkStreaming就是为批次处理,这是与Flink的最大区别。
    1.2.流与批的世界观:其中,批处理的特点是,有界、持久、大量,数据是一个批次一个批次的来,通常用于T+1模式。流处理的特点,无界、实时,数据是一条一条的来,通常用于T+0的模式。在Spark中,一切都是由批组成,离线数据是一个大批次,实时数据是一个小批次。在Flink中,一切都是由流组成,离线数据是有界的流,实时数据是一个没有界的流。
    分层API:在这里插入图片描述
    最底层级的抽象仅仅提供了有状态的流,他将通过过程函数,也就是Process Function嵌入到DataStream API中。Process Function与DataStream API相集成,使其可以对某些特定的操作进行底层的抽象,允许用户可以处理来自一个或多个数据流的事件,并使用一致的容错状态。另外用户可以注册事件事件并处理时间回调,使程序可以处理复杂的计算。
    大多数应用并不需要上述的底层抽象,而是针对核心API(Core APIs) 进行编程,比如DataStream API(有界或无界流数据)以及DataSet API(有界数据集)。这些API为数据处理提供了通用的构建模块,比如由用户定义的多种形式的转换(transformations),连接(joins),聚合(aggregations),窗口操作(windows)等等。DataSet API 为有界数据集提供了额外的支持,例如循环与迭代。这些API处理的数据类型以类(classes)的形式由各自的编程语言所表示。
    Table API是以表为中心的声明式编程,其中表可能会动态变化。用户可以自定义UDF进行扩展,虽然不如核心API更具表达能力但是用起来却更为简洁。
    Flink提供的最高层级的抽象是sql,这一层抽象在语法与表达能力上与Table API类似,是以sql查询的表达形式展现。Sql与Table API交互密切,同时sql查询可以直接在Table API定义的表上执行。
    当然,目前Flink很少用于批处理,不如Spark成熟,所以DataSet使用的并不是很多,Flink API和Flink sql也并不完善。1.12.0,已经完成实现了真正的流批一体,可以处理流式数据,也可以处理离线数据。

  2. Spark 与Flink:

    Spark与Flink 最主要的差别就在于计算模型的不同。Spark采用了微批处理模型,而Flink采用了基于操作符的连续流模型。如果要在而这种选择出一个来进行里数据处理,推荐使用Flink,因为,Flink窗口灵活,并且拥有Exactly Once语义的保证。在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值