gitweixin
  • 首页
  • 小程序代码
    • 资讯读书
    • 工具类
    • O2O
    • 地图定位
    • 社交
    • 行业软件
    • 电商类
    • 互联网类
    • 企业类
    • UI控件
  • 大数据开发
    • Hadoop
    • Spark
    • Hbase
    • Elasticsearch
    • Kafka
    • Flink
    • 数据仓库
    • 数据挖掘
    • flume
    • Kafka
    • Hive
    • shardingsphere
    • solr
  • 开发博客
    • Android
    • php
    • python
    • 运维
    • 技术架构
    • 数据库
  • 程序员网赚
  • bug清单
  • 量化投资
  • 在线查询工具
    • 去行号
    • 在线时间戳转换工具
    • 免费图片批量修改尺寸在线工具
    • SVG转JPG在线工具

月度归档3月 2024

精品微信小程序开发门户,代码全部亲测可用

  • 首页   /  2024   /  
  • 3月
Flink, Spark 3月 17,2024

Flink跟Spark Streaming的区别

  1. 架构模型:
    • Spark Streaming:基于 Spark 框架,其运行时主要角色包括 Master、Worker、Driver 和 Executor。Driver 负责创建和管理作业,Executor 则执行任务。
    • Flink:独立的实时处理引擎,主要包含 Jobmanager、Taskmanager 和 Slot。Jobmanager 负责作业的管理和调度,Taskmanager 执行具体的任务。
  2. 任务调度:
    • Spark Streaming:通过连续不断地生成微小的数据批次来处理数据。它构建有向无环图DAG,并依次创建 DStreamGraph、JobGenerator 和 JobScheduler。
    • Flink:根据用户提交的代码生成 StreamGraph,经过优化生成 JobGraph,然后提交给 JobManager 进行处理。JobManager 根据 JobGraph 生成 ExecutionGraph,用于任务调度。
  3. 时间机制:
    • Spark Streaming:仅支持处理时间,即处理数据的时间。
    • Flink:支持处理时间、事件时间和注入时间的定义,并引入 watermark 机制来处理滞后数据。
  4. 容错机制:
    • Spark Streaming:可以设置 checkpoint 来恢复任务,但可能会导致重复处理,无法保证恰好一次处理语义。
    • Flink:使用两阶段提交协议来确保精确的一次处理语义,更好地处理容错。
  5. 数据模型:
    • Spark Streaming:基于 DStream(Discretized Stream)模型,将流数据看作是一系列微小批次的静态数据。
    • Flink:采用更灵活的 DataStream 模型,支持各种数据结构和操作。
  6. 应用场景:
    • Spark Streaming:适用于需要与现有 Spark 生态系统集成的场景,如批处理和交互式查询。
    • Flink:更专注于实时处理,提供更丰富的实时处理特性和更好的低延迟性能。
  7. 性能和扩展性:
    • Flink:在处理大流量和高并发场景时通常具有更好的性能和扩展性。
    • Spark Streaming:在某些情况下可能受到 Spark 核心框架的限制。

通过以上对比,我们可以看出Flink和Spark Streaming在架构模型、任务调度、时间机制和容错机制等方面存在显著差异。Flink作为一个基于事件驱动的实时处理引擎,具有更好的时间机制和容错机制,适用于对准确性要求较高的场景。而Spark Streaming作为一个基于微批的流处理引擎,具有较低的延迟和较高的吞吐量,适用于对性能要求较高的场景。在选择流处理框架时,应根据具体需求和场景选择合适的框架。

作者 east
Spark 3月 16,2024

Spark 用AnyFunSuite单元测试Scala详细教程

在用java开发时,通过用Junit框架来测试,在用spark开发scala时,除了可以用Junit,还可以用AnyFunSuite,无需依赖AnyFunSuite。

步骤一:设置项目依赖
确保您的项目中包含了以下必要的依赖:

<dependency>
  <groupId>org.apache.spark</groupId>
  <artifactId>spark-sql_2.11</artifactId>
  <version>2.4.0</version>
</dependency>

org.apache.spark spark-core_2.11 2.4.0 test

<!-- ScalaTest 依赖 -->
<dependency>
  <groupId>org.scalatest</groupId>
  <artifactId>scalatest_2.11</artifactId>
  <version>3.2.9</version>
  <scope>test</scope>
</dependency>

步骤二、编写单元测试
例如下面wordcount的代码

import org.apache.spark.sql.SparkSession

object WordCount {
def wordCount(input: String): Long = {
val spark = SparkSession.builder().appName(“WordCount”).master(“local[*]”).getOrCreate()
val words = spark.sparkContext.parallelize(input.split(” “))
val count = words.count()
spark.stop()
count
}
}
编写单元测试的代码:

import org.scalatest.funsuite.AnyFunSuite

class WordCountTest extends AnyFunSuite {

test(“wordCount should return correct word count”) {
val input = “Hello world, hello Scala”
val expectedResult = 5
val result = WordCount.wordCount(input)
assert(result == expectedResult)
}

}
步骤三:运行单元测试
在 IDEA 中右键点击测试类名或测试方法名,选择 “Run WordCountTest” 或 “Run ‘wordCount should return correct word count'” 来运行单元测试。您也可以点击绿色的三角形按钮执行所有测试用例。

                      

关注公众号“大模型全栈程序员”回复“大数据面试”获取800页左右大数据面试宝典 ,回复“大数据”获取多本大数据电子书

作者 east

关注公众号“大模型全栈程序员”回复“小程序”获取1000个小程序打包源码。回复”chatgpt”获取免注册可用chatgpt。回复“大数据”获取多本大数据电子书

标签

AIGC AI创作 bert chatgpt github GPT-3 gpt3 GTP-3 hive mysql O2O tensorflow UI控件 不含后台 交流 共享经济 出行 图像 地图定位 外卖 多媒体 娱乐 小程序 布局 带后台完整项目 开源项目 搜索 支付 效率 教育 日历 机器学习 深度学习 物流 用户系统 电商 画图 画布(canvas) 社交 签到 联网 读书 资讯 阅读 预订

官方QQ群

小程序开发群:74052405

大数据开发群: 952493060

近期文章

  • 详解Python当中的pip常用命令
  • AUTOSAR如何在多个供应商交付的配置中避免ARXML不兼容?
  • C++thread pool(线程池)设计应关注哪些扩展性问题?
  • 各类MCAL(Microcontroller Abstraction Layer)如何与AUTOSAR工具链解耦?
  • 如何设计AUTOSAR中的“域控制器”以支持未来扩展?
  • C++ 中避免悬挂引用的企业策略有哪些?
  • 嵌入式电机:如何在低速和高负载状态下保持FOC(Field-Oriented Control)算法的电流控制稳定?
  • C++如何在插件式架构中使用反射实现模块隔离?
  • C++如何追踪内存泄漏(valgrind/ASan等)并定位到业务代码?
  • C++大型系统中如何组织头文件和依赖树?

文章归档

  • 2025年6月
  • 2025年5月
  • 2025年4月
  • 2025年3月
  • 2025年2月
  • 2025年1月
  • 2024年12月
  • 2024年11月
  • 2024年10月
  • 2024年9月
  • 2024年8月
  • 2024年7月
  • 2024年6月
  • 2024年5月
  • 2024年4月
  • 2024年3月
  • 2023年11月
  • 2023年10月
  • 2023年9月
  • 2023年8月
  • 2023年7月
  • 2023年6月
  • 2023年5月
  • 2023年4月
  • 2023年3月
  • 2023年1月
  • 2022年11月
  • 2022年10月
  • 2022年9月
  • 2022年8月
  • 2022年7月
  • 2022年6月
  • 2022年5月
  • 2022年4月
  • 2022年3月
  • 2022年2月
  • 2022年1月
  • 2021年12月
  • 2021年11月
  • 2021年9月
  • 2021年8月
  • 2021年7月
  • 2021年6月
  • 2021年5月
  • 2021年4月
  • 2021年3月
  • 2021年2月
  • 2021年1月
  • 2020年12月
  • 2020年11月
  • 2020年10月
  • 2020年9月
  • 2020年8月
  • 2020年7月
  • 2020年6月
  • 2020年5月
  • 2020年4月
  • 2020年3月
  • 2020年2月
  • 2020年1月
  • 2019年7月
  • 2019年6月
  • 2019年5月
  • 2019年4月
  • 2019年3月
  • 2019年2月
  • 2019年1月
  • 2018年12月
  • 2018年7月
  • 2018年6月

分类目录

  • Android (73)
  • bug清单 (79)
  • C++ (34)
  • Fuchsia (15)
  • php (4)
  • python (43)
  • sklearn (1)
  • 云计算 (20)
  • 人工智能 (61)
    • chatgpt (21)
      • 提示词 (6)
    • Keras (1)
    • Tensorflow (3)
    • 大模型 (1)
    • 智能体 (4)
    • 深度学习 (14)
  • 储能 (44)
  • 前端 (4)
  • 大数据开发 (488)
    • CDH (6)
    • datax (4)
    • doris (30)
    • Elasticsearch (15)
    • Flink (78)
    • flume (7)
    • Hadoop (19)
    • Hbase (23)
    • Hive (40)
    • Impala (2)
    • Java (71)
    • Kafka (10)
    • neo4j (5)
    • shardingsphere (6)
    • solr (5)
    • Spark (99)
    • spring (11)
    • 数据仓库 (9)
    • 数据挖掘 (7)
    • 海豚调度器 (10)
    • 运维 (34)
      • Docker (3)
  • 小游戏代码 (1)
  • 小程序代码 (139)
    • O2O (16)
    • UI控件 (5)
    • 互联网类 (23)
    • 企业类 (6)
    • 地图定位 (9)
    • 多媒体 (6)
    • 工具类 (25)
    • 电商类 (22)
    • 社交 (7)
    • 行业软件 (7)
    • 资讯读书 (11)
  • 嵌入式 (70)
    • autosar (63)
    • RTOS (1)
    • 总线 (1)
  • 开发博客 (16)
    • Harmony (9)
  • 技术架构 (6)
  • 数据库 (32)
    • mongodb (1)
    • mysql (13)
    • pgsql (2)
    • redis (1)
    • tdengine (4)
  • 未分类 (6)
  • 程序员网赚 (20)
    • 广告联盟 (3)
    • 私域流量 (5)
    • 自媒体 (5)
  • 量化投资 (4)
  • 面试 (14)

功能

  • 登录
  • 文章RSS
  • 评论RSS
  • WordPress.org

All Rights Reserved by Gitweixin.本站收集网友上传代码, 如有侵犯版权,请发邮件联系yiyuyos@gmail.com删除.