集成 - Apache Flink + Spring Boot

2023-11-22

我正在测试 Apache Flink 和 Spring Boot 之间的集成,在 IDE 上运行它们很好,但是当我尝试在 Apache Flink Cluster 上运行时,我遇到了一个与 ClassLoader 相关的异常。

这些课程非常简单:

BootFlink应用程序

@SpringBootApplication
@ComponentScan("com.example.demo")
public class BootFlinkApplication {

    public static void main(String[] args) {
        System.out.println("some test");
        SpringApplication.run(BootFlinkApplication.class, args);
    }
}

Flink测试

@Service
public class FlinkTest {
    @PostConstruct
    public void init() {
        StreamExecutionEnvironment see = StreamExecutionEnvironment.getExecutionEnvironment();

        see.fromElements(1, 2, 3, 4)
            .filter(new RemoveNumber3Filter()).print();

        try {
            see.execute();
        } catch (Exception e) {
            System.out.println("Error executing flink job: " + e.getMessage());
        }
    }
}

删除数字3过滤器

public class RemoveNumber3Filter implements FilterFunction<Integer> {

    @Override
    public boolean filter(Integer i) throws Exception {
        return i != 3;
    }

}

例外:

Caused by: org.apache.flink.runtime.client.JobExecutionException: Job execution failed.
        at org.apache.flink.runtime.jobmanager.JobManager$$anonfun$handleMessage$1$$anonfun$applyOrElse$6.apply$mcV$sp(JobManager.scala:897)
        at org.apache.flink.runtime.jobmanager.JobManager$$anonfun$handleMessage$1$$anonfun$applyOrElse$6.apply(JobManager.scala:840)
        at org.apache.flink.runtime.jobmanager.JobManager$$anonfun$handleMessage$1$$anonfun$applyOrElse$6.apply(JobManager.scala:840)
        at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
        at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
        at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:39)
        at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:415)
        at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
        at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
        at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
        at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
    Caused by: org.apache.flink.streaming.runtime.tasks.StreamTaskException: Cannot load user class: com.example.demo.RemoveNumber3Filter
    ClassLoader info: URL ClassLoader:
        file: '/tmp/blobStore-850f3189-807e-4f8d-a8a6-3bd3c1bd76b4/job_eb93b239080b4d4e09f10f1e3605744d/blob_p-5fd56f3348976c0d333d680fde4a79573c21cd40-48ac0995eee11f38ce3ff4f890102af8' (valid JAR)
    Class not resolvable through given classloader.
        at org.apache.flink.streaming.api.graph.StreamConfig.getStreamOperator(StreamConfig.java:232)
        at org.apache.flink.streaming.runtime.tasks.OperatorChain.createChainedOperator(OperatorChain.java:355)
        at org.apache.flink.streaming.runtime.tasks.OperatorChain.createOutputCollector(OperatorChain.java:282)
        at org.apache.flink.streaming.runtime.tasks.OperatorChain.<init>(OperatorChain.java:126)
        at org.apache.flink.streaming.runtime.tasks.StreamTask.invoke(StreamTask.java:231)
        at org.apache.flink.runtime.taskmanager.Task.run(Task.java:718)
        at java.lang.Thread.run(Thread.java:748)

您可能使用 Spring Boot Maven 插件(https://docs.spring.io/spring-boot/docs/current/reference/html/build-tool-plugins-maven-plugin.html)重新打包 Jar 以生成可执行 jar,但是,它使用 Apache Flink 的内部类加载器不支持的自定义引导布局。您尝试部署的文件 (.jar.original) 旁边应该有一个原始 jar 文件,您可以使用它在 Flink 集群上进行部署。

作为替代方案,您可以使用不同的方式生成包含所有依赖项的 Jar,例如 maven-shade (https://maven.apache.org/plugins/maven-shade-plugin/)

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

集成 - Apache Flink + Spring Boot 的相关文章

随机推荐

  • 如何检测我的用户正在使用哪个 iOS 设备?

    我正在寻找一种方法来检测我的应用程序正在运行的设备 我对软件版本不感兴趣 我搜索了很多问题 但没有一个 令人惊讶地 满足我的需求 原因如下 解决方案一 NSString deviceType UIDevice currentDevice m
  • 用于网络表单的打字稿

    Web 表单支持 Typescript 吗 我有一个现有的 asp net 4 5 Web 表单项目 其中打字稿似乎不起作用 我无法创建新文件 但即使我将现有文件重命名为 ts 它似乎也不起作用 没有构建 没有智能感知 什么都没有 找到了我
  • Pygame 导致 FPS 低的原因。如何提高性能?

    我正在使用 pygame 处理一些射弹 发现即使只有 200 行代码 游戏的运行速度也低于 50 fps 除了运行循环之外 没有大循环 而且我的电脑相当新 那么 这是因为 pygame 使用 SDL 吗 如果是这样 使用像 OpenGL 这
  • 如何设置savon默认超时值

    我正在使用 savon 进行一些 api 调用 但它需要很长时间才能响应 因为我收到超时错误 所以有什么方法可以更改超时的默认值 我正在使用 savon 0 7 9 ruby 1 8 7 和rails v 2 3 2 Savon 使用 ge
  • 基类和继承中的静态方法中的静态变量

    我有这些 C 类 class Base protected static int method static int x 0 return x class A public Base class B public Base 会不会x静态变量
  • 当数据源为 Linq 时访问 ItemDataBound 事件中的列

    我使用以下代码设置数据源 protected void Page Load object sender EventArgs e var vacancies from v in db Vacancies join c in db Custom
  • 避免传递数据框的最佳方法是什么?

    我有12个data frame一起工作 它们是相似的 我必须对每一个进行相同的处理 所以我编写了一个函数 它需要一个data frame 处理它 然后返回一个data frame 这有效 但我担心我正在绕过一个非常大的结构 我可能正在制作临
  • 如何使用正则表达式分割字符串

    我想将一个字符串拆分为列表或数组 Input green yellow green white orange blue black 分割字符是逗号 但它必须忽略引号内的逗号 输出应该是 green 黄绿色 white orange 蓝黑 T
  • mvc.net验证是否支持ValidationGroup的概念

    来自 asp net 的背景 在向页面添加验证时 我非常欣赏 validationGroup 的概念 我一直在 mvc net 中寻找相应的概念 但运气不佳 这个概念在 mvc net 中可用吗 如果没有 我还有什么选择 不幸的是 它没有附
  • 有人有渲染 HTML 的 diff 算法吗? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 我有兴趣看到一个好的 diff 算法 可能是用 Javascript 编写的 用于渲染两个 HTML 页面的并排差异 这个想法是 diff 将显示差
  • 生命周期和对包含引用的对象的引用

    假设我有一个包含引用的结构 以及另一个包含对该结构的引用的结构 如下所示 struct Image lt a gt pixel data a mut Vec
  • 运行 Android 测试会产生“未知的命令行选项‘--tests’”

    我需要使用命令行在快速文件中的应用程序的特定包中使用 Gradle 运行测试 我正在使用这个命令 sh gradlew test tests com package exemple 但它给了我这个错误 从命令行配置任务 app test 时
  • 关闭 ContentProvider 中的数据库

    本周我学习了有关 ContentProvider 的所有内容 并使用 SQLiteOpenHelper 类来管理提供程序内部数据库的创建和升级 具体来说 我一直在阅读 sdk 示例目录中的 NotePad 示例 现在 我可以看到 SQLit
  • 非常快的文本文件处理(C++)

    我编写了一个在 GPU 上处理数据的应用程序 代码运行良好 但我遇到的问题是输入文件的读取部分 3GB 文本 是我的应用程序的瓶颈 从HDD读取速度快 但逐行处理速度慢 我使用 getline 读取一行并将第 1 行复制到向量 将第 2 行
  • cmd 脚本中的日期算术

    我需要编写一个脚本将文件名从 aDate txt 更改为 bDate txt 其中 aDate 是当前系统日期yyyymmdd格式和 bDate 是当前系统日期 1 inyyyymmdd format 我目前有 set yy date 6
  • Firestore 对象数据类型规则

    数据库有一个集合 Collection 集合内的每个文档都有一个对象 members 其中包含有权访问该文档的用户的 uid Collection gt document gt members BZntnJO2PVS8OZ9wctwHiyx
  • C# - 用数据表填充组合框

    我习惯于使用 Java 那里有大量的示例 由于各种原因 我不得不切换到 C 并尝试在 SharpDevelop 中执行以下操作 Form has a menu containing a combobox added via SharpDev
  • 使用autonomousSingleAppModePermissionAppIDs和UIAccessibilityRequestGuidedAccessSession与Meraki一起作为MDM进入单一应用程序模式

    我使用 Apple Configurator 将少量设备设置为受监管 但是 我无法使用以下命令让应用程序成功进入单一应用程序模式UIAccessibilityRequestGuidedAccessSession API 我创建了一个配置文件
  • 如何使用 mongodb 验证器验证对象数组?

    我一直在尝试使用 MongoDB 提供的验证器来验证我的数据 但遇到了问题 这是我要插入的一个简单的用户文档 name foo surname bar books name ABC no 19 name DEF no 64 name GHI
  • 集成 - Apache Flink + Spring Boot

    我正在测试 Apache Flink 和 Spring Boot 之间的集成 在 IDE 上运行它们很好 但是当我尝试在 Apache Flink Cluster 上运行时 我遇到了一个与 ClassLoader 相关的异常 这些课程非常简