[实时计算flink]本地运行和调试包含连接器的作业

ops/2024/10/25 3:23:30/

本文为您介绍如何在开发者本地环境中运行和调试包含阿里云实时计算Flink版连接器的作业,以便快速验证代码的正确性,快速定位和解决问题,并节省云上成本。

背景信息

当您在IntelliJ IDEA中运行和调试Flink作业,如果其包含了阿里云实时计算Flink版的商业版连接器依赖,可能会遇到无法找到连接器相关类的运行错误。例如,运行含有大数据计算服务MaxCompute连接器的作业时出现如下异常:

Caused by: java.lang.ClassNotFoundException: com.alibaba.ververica.connectors.odps.newsource.split.OdpsSourceSplitSerializerat java.net.URLClassLoader.findClass(URLClassLoader.java:387)at java.lang.ClassLoader.loadClass(ClassLoader.java:418)at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:355)at java.lang.ClassLoader.loadClass(ClassLoader.java:351)

该异常是由于连接器默认JAR包中缺少部分运行类,您可以通过执行下列步骤来添加这些缺失的类,从而能够在IntelliJ IDEA中运行或调试作业。

步骤一:添加作业配置中的依赖

首先从Maven中央仓库下载包含运行类的uber JAR包。例如对于大数据计算服务MaxCompute使用的依赖ververica-connector-odps,以1.17-vvr-8.0.4-1版本为例,可以在Maven仓库对应目录下看到后缀为uber.jar的ververica-connector-odps-1.17-vvr-8.0.4-1-uber.jar,将其下载到本地目录。

其次在代码中创建环境时增加配置pipeline.classpaths为uber jar路径,若有多个连接器依赖,使用分号隔开,例如file:///path/to/a-uber.jar;file:///path/to/b-uber.jar(对于Windows需要加相应磁盘分区,例如file:///D:/path/to/a-uber.jar;file:///E:/path/to/b-uber.jar)。DataStream API作业通过如下代码配置:

Configuration conf = new Configuration();
conf.setString("pipeline.classpaths", "file://" + "uber jar绝对路径");
StreamExecutionEnvironment env =StreamExecutionEnvironment.getExecutionEnvironment(conf);

Table API作业通过如下代码进行配置:

Configuration conf = new Configuration();
conf.setString("pipeline.classpaths", "file://" + "uber jar绝对路径");
EnvironmentSettings envSettings =EnvironmentSettings.newInstance().withConfiguration(conf).build();
TableEnvironment tEnv = TableEnvironment.create(envSettings);

重要

该新增的pipeline.classpaths配置需要在作业打包上传到阿里云实时计算Flink版之前删除。

步骤二:配置运行所需要的ClassLoader JAR包

为了使Flink能够加载连接器的运行类,还需添加ClassLoader JAR包。首先下载ververica-classloader-1.15-vvr-6.0-SNAPSHOT.jar至本地。

以Inteillij IDEA为例,对作业的本地运行配置进行修改。点击入口类左侧的绿色图标展开菜单栏,并选择“修改运行配置”:

商业版连接器本地运行-IDEA运行1

商业化连接器本地运行-IDEA运行2

在打开的运行配置窗口中,点击“Modify options”,勾选“Modify classpath”,在窗口下方会增加“Modify classpath”一栏,点击“+”号选择上文下载的ClassLoader JAR包,并保存该运行配置。

商业版连接器本地运行-IDEA配置1

步骤三:运行或调试

在IntelliJ IDEA界面右上角的运行面板中,切换到刚才保存的运行配置,即可进行本地运行或调试。

如果提示缺少一些常见的Flink类无法执行,例如org.apache.flink.configuration.Configuration,需要在“Modify options”处勾选“Add dependencies with provided scope to classpath”。

商业版连接器本地运行-IDEA运行3


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

相关文章

【C++】四种强制类型转换

创作不易&#xff0c;本篇文章如果帮助到了你&#xff0c;还请点赞 关注支持一下♡>&#x16966;<)!! 主页专栏有更多知识&#xff0c;如有疑问欢迎大家指正讨论&#xff0c;共同进步&#xff01; &#x1f525;c系列专栏&#xff1a;C/C零基础到精通 &#x1f525; 给大…

Vue中使用路由

目录 单页应用程序&#xff1a;SPA - Single Page Application路由 VueRouterVueRouter使用步骤组件存放目录问题 路由模块封装声明式导航 - 导航连接两个类名自定义匹配类名 声明式导航 - 跳转传参Vue路由 - 重定向Vue路由 - 404Vue路由 - 模式设置 编程式导航 - 基本跳转编程…

C++题集

1。对象的核心概念就是通常所说的 继承、封装和多态性 。 2。函数的 声明、定义和调用 称为函数三步曲. 3.Cin后面的符号是&#xff1a; 〉> ,cout后面的符号是&#xff1a; << 。 4.面向对象的英文缩写是&#xff1a; OOP 。 5。已知X2,y3&#xff0c;x<y的值…

STMicroelectronics 意法半导体芯片选型表

意法半导体作为全球知名的半导体厂商&#xff0c;其产品广泛应用于各个领域&#xff0c;从消费电子到工业控制&#xff0c;从汽车电子到通信设备&#xff0c;都能看到意法半导体芯片的身影。在电子硬件设计领域&#xff0c;芯片的选型至关重要。亿配芯城&#xff08;ICgoodFind…

uiautomatorviewer安卓9以上正常使用及问题处理

一、安卓9以上使用uiautomatorviewer问题现象 打开Unexpected error while obtaining UI hierarchy 问题详情 Unexpected error while obtaining UI hierarchy java.lang.reflect.InvocationTargetException 二、问题处理 需要的是替换对应D:\software\android-sdk-windows…

StockEmotions :洞察投资者情绪,助力金融时序研究

作者&#xff1a;老余捞鱼 原创不易&#xff0c;转载请标明出处及原作者。 写在前面的话&#xff1a; 这篇论文介绍了StockEmotions数据集&#xff0c;它包含从金融社交媒体平台StockTwits收集的10,000条英文评论&#xff0c;旨在通过识别投资者情绪来进行金融情绪分析和…

LockBit多版本简单对比

LockBit家族介绍 LockBit是一种非常知名且活跃的勒索软件家族&#xff0c;自2019年首次被发现以来&#xff0c;已经经历了多个版本的演变。它以其高效的加密速度和自动化攻击能力而闻名&#xff0c;对各类组织构成了严重威胁。 发展时间线如下&#xff1a; 时间 事件 2019年…

从0到1学习node.js(path模块以及HTTP协议)

文章目录 一、path模块二、HTTP协议1、常见状态码分类2、IP地址3、端口 一、path模块 // 引入path模块 const path require(path)// 拼接地址 const resolveData path.resolve(__dirname, ./index) console.log(__dirname, __dirname) console.log(resolveData, resolveData…