如何等待Spark服务停止?

2023-12-25

对于我的 Spark API,我正在构建集成测试。有时我想停止并启动 Spark 实例。当我这样做时,有时会遇到这样的问题:我正在创建一个新的 Spark 实例,而旧的实例仍在单独的线程上关闭。了解 Spark 实例何时实际关闭会很有帮助。

首先,我像这样启动 Spark 实例:

Spark.init();
Spark.awaitInitialization();

然后我像这样停止它:

Spark.stop();

现在我打电话后stop(),Spark服务实际上并没有停止!

有没有类似的功能awaitInitialization()或者知道 Spark 服务何时实际停止的另一种方法?


Spark 2.8.0 引入了awaitStop()方法:https://github.com/perwendel/spark/pull/730 https://github.com/perwendel/spark/pull/730

如果您陷入以下版本(例如使用 Spark 2.6.0 的 Spark-kotlin),您可以使用一些反射来识别 Spark 的当前状态:

    fun awaitShutdown() {
        Spark.stop()

        while (isSparkInitialized()) {
            Thread.sleep(100)
        }
    }

    /**
     * Access the internals of Spark to check if the "initialized" flag is already set to false.
     */
    private fun isSparkInitialized(): Boolean {
        val sparkClass = Spark::class.java
        val getInstanceMethod = sparkClass.getDeclaredMethod("getInstance")
        getInstanceMethod.isAccessible = true
        val service = getInstanceMethod.invoke(null) as Service

        val serviceClass = service::class.java
        val initializedField = serviceClass.getDeclaredField("initialized")
        initializedField.isAccessible = true
        val initialized = initializedField.getBoolean(service)

        return initialized
    }

(摘自https://github.com/debuglevel/sparkmicroserviceutils/blob/ec6b9692d808ecc448f1828f5487739101a2f62e/src/main/kotlin/de/debuglevel/microservices/utils/spark/SparkTestUtils.kt https://github.com/debuglevel/sparkmicroserviceutils/blob/ec6b9692d808ecc448f1828f5487739101a2f62e/src/main/kotlin/de/debuglevel/microservices/utils/spark/SparkTestUtils.kt)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何等待Spark服务停止? 的相关文章

随机推荐

  • 如何保护控制器不被直接访问?

    我正在将 codeigniter 与 jquery 一起使用 如果您向我解释如何保护控制器不被直接访问 那就太好了 例如 我对标准 jquery 行有看法 handler load tools get stats 工具是我的控制器 具有加载
  • BlackBerry - 如何启动消息应用程序?

    我想在我的应用程序中使用 gtalk 或任何其他信使 但我不知道如何执行此操作 您可以告诉我如何解决这个问题吗 如果您可以向我提供一些网络链接以了解有关此问题的更多信息 对于标准 BB Messenger 请尝试以下操作 int mh Co
  • C# 语言规范说明:6.2.4 显式引用转换

    正如我在this https stackoverflow com questions 53559287 c sharp foreach on ienumerableilistobject compiles but shouldnt 发布后
  • Gradle项目中IntelliJ IDEA编码问题

    通常情况下 我不会在这里提问 但我面临的问题是如此令人毛骨悚然 我无法再独自对抗 我已经筋疲力尽了 不管怎样 我将描述我所发现的一切 我发现了许多有趣的事情 我想相信这会帮助别人帮助我 软件版本 操作系统 Windows 10 Pro版本
  • 将模型保存为 H5 或 SavedModel 时出现 TensorFlow Hub 错误

    我想使用这个 TF Hub 资源 https tfhub dev google imagenet resnet v1 50 feature vector 3 https tfhub dev google imagenet resnet v1
  • iOS 13 TLS 问题

    我已经安装了 iOS 13 beta 版本并运行了包含大量网络请求的框架 但出现了以下错误 2019 09 19 15 01 33 566811 0200 395 25439 Connection 4 default TLS Trust e
  • 展平 PHP 数组

    假设我有一个包含这些字段的表单 并且无法重命名它们
  • 如何使用 iTextSharp 设置 PDF 段落的字体?

    尝试效仿这个例子here https web archive org web 20211020001758 https www 4guysfromrolla com articles 030911 1 aspx 我添加了以下代码来创建 PD
  • Laravel + Inertia SSR 如何更改默认端口?错误:监听 EADDRINUSE:地址已在使用中 :::13714

    所以我有一个生产站点和一个暂存站点 两者都在 Laravel 上 并使用服务器端渲染 SSR Node js 服务器是 Ubuntu 22 04 1 LTS 我使用 PM2 作为 Node js 的生产流程管理器 当我跑步时pm2 star
  • 手动触发 jQuery 自动完成

    我将 jQuery UI 自动完成与一些 AJAX 结合使用 直到停止输入后才会提取数据 我想做到这样 一旦找到数据 自动完成就会作为搜索结果弹出 但是 只有当我再次开始输入时 这才有效 下拉列表在我输入之前不会触发 因为直到我停止输入后它
  • 除了在Java中获取屏幕尺寸之外,还可以使用其他方式设置全屏

    我想知道是否有一种方法比使用更好Toolkit getDefaultToolkit getScreenSize getHeight getWidth 然后使用它作为 JFrame 的尺寸 然后将 JFrame 设置为undecorated
  • 使用 PHP 脚本转发电子邮件

    我们有一个 cron 的 PHP 脚本 每十分钟检查一次收件箱 该脚本的目的是处理我们提供的短信通知服务的 停止退出 功能 如果脚本发现任何电子邮件开头带有 STOP 一词的电子邮件 我们会从通知数据库中删除该用户 为了覆盖我们的基地 我们
  • 将字符串列表转换为由分隔符分隔的字符串

    将字符串列表转换为字符串的最佳方法是什么 其中值以逗号分隔 String Join myListOfStrings ToArray
  • Java中判断一个字符串是否为整数[重复]

    这个问题在这里已经有答案了 我试图确定字符串数组中的特定项目是否是整数 I am split 中的中缀表达式String形式 然后尝试将结果数组拆分为两个数组 一种用于整数 一种用于运算符 同时丢弃括号和其他杂项 实现这一目标的最佳方法是什
  • WPF ListView 的资源管理器主题?

    如何在 WPF ListView 中获取资源管理器主题 我知道一个答案是 GridView 但这就像Details在 Windows 资源管理器中查看 我需要列表 图块和图标查看主题如资源管理器 我怎样才能得到它 The Windows A
  • 跟踪 Rails 中 ActiveRecord 对象中非持久属性的脏信息

    我有一个继承自 ActiveRecord 的对象 但它有一个未保留在数据库中的属性 例如 class Foo lt ActiveRecord Base attr accessor bar end 我希望能够使用 ActiveModel Di
  • GAC 正在进行编辑流程吗?

    每次我对库类进行编辑时 我都会对其进行编译以获得更新的 DLL 但是为了对使用该库的项目进行有效编辑 我必须执行以下命令 gacutil I
  • 如何使用 Python 通过 XMPP 传输文件?

    我在用着xmpppy http xmpppy sourceforge net 我的 jabber 远程管理机器人的库 但我找不到如何发送 接收文件并将其保存在指定的目录中 文档很差 也没有任何示例 但我真的很想制作它 任何人都可以展示一些示
  • 将自定义表单元素添加到 Adminhtml 表单

    有没有办法将自定义表单元素添加到 Magento Adminhtml 表单中 而不将自定义元素放置在lib Varian folder 我已经找到了本质上是一个的代码Varian Data Form Element factory publ
  • 如何等待Spark服务停止?

    对于我的 Spark API 我正在构建集成测试 有时我想停止并启动 Spark 实例 当我这样做时 有时会遇到这样的问题 我正在创建一个新的 Spark 实例 而旧的实例仍在单独的线程上关闭 了解 Spark 实例何时实际关闭会很有帮助