# FlinkTutorial **Repository Path**: liyong90/flink-tutorial ## Basic Information - **Project Name**: FlinkTutorial - **Description**: flink 学习 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-10-08 - **Last Updated**: 2024-10-08 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # flink 学习 ## 基础概念 * 无界数据流(Unbounded Data Stream) > 所谓无界数据流,就是有头没尾,数据的生成和传递会开始但永远不会结束,。我们无法等待所有数据都到达,因为输入是无界的,永无止境,数据没有“都到达”的 时候。所以对于无界数据流,必须连续处理,也就是说必须在获取数据后立即处理。在处理无 界流时,为了保证结果的正确性,我们必须能够做到按照顺序处理数据。 * 有界数据流(Bounded Data Stream) > 对应的,有界数据流有明确定义的开始和结束,所以我们可以通过获取 所有数据来处理有界流。处理有界流就不需要严格保证数据的顺序了,因为总可以对有界数据 集进行排序。有界流的处理也就是批处理。 ## Spark 和 Flink ```text Spark 和 Flink 可以说目前是各擅胜场,批处理领 域 Spark 称王,而在流处理方面 Flink 当仁不让。具体到项目应用中,不仅要看是流处理还是 批处理,还需要在延迟、吞吐量、可靠性,以及开发容易度等多个方面进行权衡。 如果在工作中需要从 Spark 和 Flink 这两个主流框架中选择一个来进行实时流处理,我们 更加推荐使用 Flink,主要的原因有: ⚫ Flink 的延迟是毫秒级别,而 Spark Streaming 的延迟是秒级延迟。 ⚫ Flink 提供了严格的精确一次性语义保证。 ⚫ Flink 的窗口 API 更加灵活、语义更丰富。 ⚫ Flink 提供事件时间语义,可以正确处理延迟数据。 ⚫ Flink 提供了更加灵活的对状态编程的 API ```