Maven 构建 Flink 应用程序的最佳实践(根除各种类冲突/类加载问题)

ops/2024/9/23 1:44:48/

作为开发者,在构建 Flink 应用程序时的体验真是一言难尽,想必大家都曾遇到过各种 ClassNotFoundException、NoSuchMethodError 以及 Could not find any factory for identifier kafka/jdbc/hive/hudi that implements org.apache.flink.table.factories.DynamicTableFactory in the classpath 这样的错误。坦率地说,Flink 的应用程序构建体验要比 Spark 差很多,在 Flink 上遇到各种类加载问题和 Jar 包冲突的几率非常高,再加上 Flink 的官方文档也差强人意,给开发者带来了很多困惑和糟糕的用户体验。有些扯远了,回到我们的话题:到底如何才能规避构建 Flink 应用过程中的种种问题,实现平滑顺畅的应用部署呢?本文会根据笔者过去的经验介绍一些重要的最佳实践

mavenshadeplugin__uberjar_3">最佳实践(1): 总是使用 maven-shade-plugin 构建 uber-jar


在我以往的经历中,很少使用 maven-shade-plugin,把若干依赖的 Jar 打成一个超大的 uber-jar 并不一种很优雅的做法,且超大的单体 Jar 包在部署时极其不便(每次都要上传或下载大文件)。那么,为什么还用推荐 maven-shade-plugin 来构建 Flink 应用呢?原因并不是因为 uber-jar 本身有什么好处,而是因为 maven-shade-plugin 提供了对依赖包的重命名以及合并 Jar 包元数据的能力,这些处理让生成的 uber-jar 能规避绝大多数的类冲突类加载问题 ,一个典型的


http://www.ppmy.cn/ops/26410.html

相关文章

Golang | Leetcode Golang题解之第60题排列序列

题目&#xff1a; 题解&#xff1a; func getPermutation(n int, k int) string {factorial : make([]int, n)factorial[0] 1for i : 1; i < n; i {factorial[i] factorial[i - 1] * i}k--ans : ""valid : make([]int, n 1)for i : 0; i < len(valid); i {…

锂电池SOH预测 | 基于CNN的锂电池SOH预测(附matlab完整源码)

锂电池SOH预测 锂电池SOH预测完整代码锂电池SOH预测 锂电池的SOH(状态健康度)预测是一项重要的任务,它可以帮助确定电池的健康状况和剩余寿命,从而优化电池的使用和维护策略。 SOH预测可以通过多种方法实现,其中一些常用的方法包括: 容量衰减法:通过监测电池的容量衰减…

监视器和显示器的区别,普通硬盘和监控硬盘的区别

监视器与显示器的区别&#xff0c;你真的知道吗&#xff1f; 中小型视频监控系统中&#xff0c;显示系统是最能展现效果的一个重要环节&#xff0c;显示系统的优劣将直接影响视频监控系统的用户体验满意度。 中小型视频监控系统中&#xff0c;显示系统是最能展现效果的一个重要…

一文解决ArcGIS生成点和管段 含案例讲解

背景 在工作中&#xff0c;我们经常遇到要将坐标数据导入 GIS&#xff0c;生成点位&#xff0c;若是地理坐标系&#xff08;经纬度&#xff09;&#xff0c;那么直接用 arcgis或者QGIS 导入数据就行了&#xff0c;可实际中总会遇到各种问题&#xff1a; 坐标数据集为大地 200…

Android创建快捷方式到桌面

效果图 参考 https://blog.51cto.com/u_16175498/8811197https://blog.51cto.com/u_16175498/8811197 权限 <uses-permission android:name"com.android.launcher.permission.INSTALL_SHORTCUT" /> 实现 if (Build.VERSION.SDK_INT > Build.VERSION_C…

window驱动开发-内核线程

在内核开发中&#xff0c;不可避免需要用到多线程技术&#xff0c;毕竟驱动是针对所有进程&#xff0c;而非某个特定进程&#xff0c;故驱动自然也是多线程的。在设计目标中&#xff0c;已经明确了驱动例程设计中&#xff0c;需要考虑的问题之一就是"重入"的概念&…

ASP.NET通用作业批改系统设计

摘  要 该系统采用B/S结构&#xff0c;以浏览器方式登陆系统&#xff0c;用ASP.NET作为开发语言&#xff0c;数据库则使用Microsoft SQL Server 2000实现。《通用作业批改系统》包括了学生子系统、教师子系统、管理员子系统三大模块&#xff0c;该系统主要完成学生&#xff…

用Jenkins Gerrit-Trigger插件实现提交gerrit后自动启动编译验证

说明&#xff1a;如果没有gerrit-trigger&#xff0c;说明缺少插件&#xff0c;先安装插件即可。 步骤 1.在Jenkins首页点击Manage Jenkins 2.点击Gerrit Trigger 3.配置gerrit服务器 下图是已配置好的gerrit服务器&#xff0c;配置完毕记得点击status下面的按钮进行测试服务…