Flink程序打包 maven配置(scala版本)

【Flink实战】一、flink 如何运行scala程序? flink 如何运行scala程序? 先参考了链接: https://www.liujiajia.me/2019/9/10/package-flink-scala-project-with-intellij-idea sbt下载地址: https://www.scala-sbt.org/download.html bin\flink.bat run -c org.example.WordCount D:\liujiajia\github\flink-project\target\scala-2.12\fli 阅读详情

在IDEA中开发Flink程序时,如果把Flink核心依赖包的scope设置为provided,测试会报NoClassDefFountError,但如果设置为compile,打包时核心包也会被打进去。一来包会很大,二来可能会引发jar包冲突,很不方便。

官方给的建议是使用profile标签,提供可选择的scope范围。

核心包scope值全部设置为provided,其他包缺省,配合profile标签可灵活实现测试和打包需求。

请注意:

Flink的核心包不包含任何 connector或者 libraries (CEP, SQL, ML, etc.),为了在集群上使用这些依赖,请务必将这些非核心依赖打进最终可执行jar(缺省其scope范围即可,默认compile)。

下面看pom文件全文(中间我加了一些自己的东西):

<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>

	<groupId>com.ccclubs</groupId>
        <artifactId>flinkdemo</artifactId>
        <version>1.0-SNAPSHOT</version>

        <name>flinkdemo</name>
        <!-- FIXME change it to the project's website -->
        <url>http://www.example.com</url>

	<repositories>
		<repository>
			<id>apache.snapshots</id>
			<name>Apache Development Snapshot Repository</name>
			<url>https://repository.apache.org/content/repositories/snapshots/</url>
			<releases>
				<enabled>false</enabled>
			</releases>
			<snapshots>
				<enabled>true</enabled>
			</snapshots>
		</repository>
	</repositories>

	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<flink.version>1.6.1</flink.version>
		<scala.binary.version>2.11</scala.binary.version>
		<scala.version>2.11.12</scala.version>
		<maven.build.timestamp.format>yyyyMMddHHmmss</maven.build.timestamp.format>
	</properties>

	<dependencies>
		<!-- Apache Flink dependencies -->
		<!-- These dependencies are provided, because they should not be packaged into the JAR file. -->
		<dependency>
			<groupId>org.apache.flink</groupId>
			<artifactId>flink-scala_${scala.binary.version}</artifactId>
			<version>${flink.version}</version>
			<scope>provided</scope>
		</dependency>
		<dependency>
			<groupId>org.apache.flink</groupId>
			<artifactId>flink-streaming-scala_${scala.binary.version}</artifactId>
			<version>${flink.version}</version>
			<scope>provided</scope>
		</dependency>

		<!-- Scala Library, provided by Flink as well. -->
		<dependency>
			<groupId>org.scala-lang</groupId>
			<artifactId>scala-library</artifactId>
			<version>${scala.version}</version>
			<scope>provided</scope>
		</dependency>

		<!-- Add connector dependencies here. They must be in the default scope (compile). -->

		<dependency>
			<groupId>org.apache.flink</groupId>
			<artifactId>flink-connector-kafka-0.11_2.11</artifactId>
			<version>${flink.version}</version>
			<exclusions>
				<exclusion>
					<groupId>log4j</groupId>
					<artifactId>*</artifactId>
				</exclusion>
				<exclusion>
					<groupId>org.slf4j</groupId>
					<artifactId>slf4j-log4j12</artifactId>
				</exclusion>
			</exclusions>
		</dependency>

		<!-- Add logging framework, to produce console output when running in the IDE. -->
		<!-- These dependencies are excluded from the application JAR by default. -->
		<dependency>
			<groupId>org.slf4j</groupId>
			<artifactId>slf4j-log4j12</artifactId>
			<version>1.7.7</version>
			<scope>runtime</scope>
		</dependency>
		<dependency>
			<groupId>log4j</groupId>
			<artifactId>log4j</artifactId>
			<version>1.2.17</version>
			<scope>runtime</scope>
		</dependency>
	</dependencies>

	<build>

		<!--scala待编译的文件目录-->
		<sourceDirectory>src/main/scala</sourceDirectory>
		<testSourceDirectory>src/test/scala</testSourceDirectory>

		<!--包名-->
		<finalName>flink-demo_${project.version}_${maven.build.timestamp}</finalName>

		<!--配置文件路径-->
		<resources>
			<resource>
				<directory>${project.basedir}/src/main/resources</directory>
				<includes>
					<include>*.properties</include>
					<include>*.xml</include>
				</includes>
			</resource>
		</resources>
		<plugins>
			<!-- We use the maven-shade plugin to create a fat jar that contains all necessary dependencies. -->
			<!-- Change the value of <mainClass>...</mainClass> if your program entry point changes. -->
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-shade-plugin</artifactId>
				<version>3.0.0</version>
				<executions>
					<!-- Run shade goal on package phase -->
					<execution>
						<phase>package</phase>
						<goals>
							<goal>shade</goal>
						</goals>
						<configuration>
							<artifactSet>
								<excludes>
									<exclude>org.apache.flink:force-shading</exclude>
									<exclude>com.google.code.findbugs:jsr305</exclude>
									<exclude>org.slf4j:*</exclude>
									<exclude>log4j:*</exclude>
								</excludes>
							</artifactSet>
							<filters>
								<filter>
									<!-- Do not copy the signatures in the META-INF folder.
									Otherwise, this might cause SecurityExceptions when using the JAR. -->
									<artifact>*:*</artifact>
									<excludes>
										<exclude>META-INF/*.SF</exclude>
										<exclude>META-INF/*.DSA</exclude>
										<exclude>META-INF/*.RSA</exclude>
									</excludes>
								</filter>
							</filters>
							<transformers>
								<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
									<mainClass>org.myorg.quickstart.StreamingJob</mainClass>
								</transformer>
							</transformers>
						</configuration>
					</execution>
				</executions>
			</plugin>

			<!-- Java Compiler -->
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-compiler-plugin</artifactId>
				<version>3.1</version>
				<configuration>
					<source>1.8</source>
					<target>1.8</target>
				</configuration>
			</plugin>

			<!-- Scala Compiler -->
			<plugin>
				<groupId>net.alchim31.maven</groupId>
				<artifactId>scala-maven-plugin</artifactId>
				<version>3.2.2</version>
				<executions>
					<execution>
						<goals>
							<goal>compile</goal>
							<goal>testCompile</goal>
						</goals>
					</execution>
				</executions>
			</plugin>
		</plugins>
	</build>

	<profiles>
		<!-- This profile helps to make things run out of the box in IntelliJ -->
		<!-- Its adds Flink's core classes to the runtime class path. -->
		<!-- Otherwise they are missing in IntelliJ, because the dependency is 'provided' -->
		<profile>
			<id>add-dependencies-for-IDEA</id>

			<activation>
				<property>
					<name>idea.version</name>
				</property>
			</activation>

			<dependencies>
				<dependency>
					<groupId>org.apache.flink</groupId>
					<artifactId>flink-scala_${scala.binary.version}</artifactId>
					<version>${flink.version}</version>
					<scope>compile</scope>
				</dependency>
				<dependency>
					<groupId>org.apache.flink</groupId>
					<artifactId>flink-streaming-scala_${scala.binary.version}</artifactId>
					<version>${flink.version}</version>
					<scope>compile</scope>
				</dependency>
				<dependency>
					<groupId>org.scala-lang</groupId>
					<artifactId>scala-library</artifactId>
					<version>${scala.version}</version>
					<scope>compile</scope>
				</dependency>
			</dependencies>
		</profile>
	</profiles>

</project>

IDEA右上角的 maven projects:

本地测试时勾选add-dependencies-for-IDEA选项,这时核心依赖包的scope为compile。

打包时不要勾选,scope值为provided,因此不会打进jar包。

参考:

https://ci.apache.org/projects/flink/flink-docs-release-1.6/start/dependencies.html

https://ci.apache.org/projects/flink/flink-docs-release-1.6/quickstart/scala_api_quickstart.html#maven

注:转载请注明出处

 

 

idea 打包flink1.9.1的scala程序报java.lang.StackOverflowError 报错:error:java.lang.StackOverflowError 前端时间一直在忙其他的事情,最近将flink升级到1.9.1之后,想要重新打一下包,然后就出问题了,怎么打都打不上,开始以为是maven的版本低了,升级版本,没解决问题,后来在经过众多磨难之后成功打包,记录一下,避免再趟坑; 开始是在网上搜了一下 借鉴:https://blog.csdn.net/truth99/art... 阅读详情

相关推荐

使用Scala打包Flink程序并在服务器上进行大数据部署

本文将介绍如何使用Scala编写Flink程序,并将其打包并部署到服务器上进行运行。本文介绍了如何使用Scala编写Flink程序,并将其打包并部署到服务器上进行大数据运算。同时,你也可以根据需要扩展和优化你的Flink程序,以满足不同的大数据处理需求。在编写完Flink程序后,我们需要将其打包成可执行的JAR文件。本文将以一个简单的WordCount示例作为案例,演示如何使用Scala编写Flink程序。这将生成一个名为wc.jar的JAR文件,其中包含了我们的Flink程序。三、打包Flink程序。

2301_79366177的博客 226

ClickHouse大数据分析与实战

<img src="https://img-bss.csdnimg.cn/202104090925218020.png" alt="" />

Flink学习笔记04:将项目打包提交到Flink集群上运行(Scala版)

创建项目、打包项目、提交到Flink集群运行

howard2005的专栏 2203

搭建Scala开发环境

则会进入Scala的命令行模式,在此可以编写Scala表达式和程序。·存盘退出后,执行命令:source /etc/profile。var - variable:用于定义Scala变量。val - value:用于定义Scala常量。常量只能赋值一次,再次赋值是不允许的。

justlpf的专栏 750

Flink POM文件和Flink Scala编程

要配置Flink的POM文件以使用Scala编程,首先需要添加Flink的依赖项和Scala编译器插件。要配置Flink的POM文件以使用Scala编程,首先需要添加Flink的依赖项和Scala编译器插件。通过配置正确的POM文件并使用Scala编写Flink应用程序,您可以充分利用Flink的强大功能来处理大数据和流式数据。通过配置正确的POM文件并使用Scala编写Flink应用程序,您可以充分利用Flink的强大功能来处理大数据和流式数据。Flink POM文件和Flink Scala编程。

PixelNovaO的博客 432

Flink 开发工程应加载哪些依赖

讲解flink打包时 依赖相关配置

chanyue123的博客 1026

Idea中Flink环境配置

Idea中Flink环境配置 下载Flink并解压,我选择的是Apache Flink 1.7.2 only. 在Idea中安装Scala插件和SDK.注意要和网站下载下来的编译Flink的scala版本对应,即2.11还是2.12 在Idea新建项目,选择Maven.勾选 Create from archetype,从列表中找到org.scala-tools.archetypes. 如果没有这...

TIMELIMITE的专栏 5730

Comsol 压电换能器声场仿真(远场分析、边界元法优化)

本文详细介绍了在Comsol中使用边界元法进行压电换能器远场声场仿真的高效方法。针对传统有限元法计算远场时内存消耗大、耗时长的问题,文章阐述了边界元法在处理无限域、提升计算效率和精确获取远场指向性方面的核心优势,并提供了从多物理场耦合设置、网格划分策略到求解器配置及结果验证的完整实战指南。

weixin_29045585的博客 405

(五)Flink小demo,java+scala,SBT+Maven,socket拒绝访问

Demo-Scala_SBT 使用SBT构建flink的Scala项目: 1.新建一个scala-SBT项目 2.Next 目前idea使用的sbt版本为0.13.X系列与我本地的1.0.0版本不同,但是不要紧,不影响执行命令时,会使用本地的SDK。【官方目前主要维护的版本有两个:0.13.X和1.X。需要注意的是,IDEA上的SBT插件暂时是随着0.13.X系列更新的,而我本地是1.0.0】...

王某的博客 2044

Nano Banana 2哪里使用?Nano Banana 2提示词合集和使用教程

收集最强的Nano Banana 2提示词合集,以及Nano Banana 2哪里使用的教程,并且有10个免费使用渠道。

qq_42927225的博客 1988

NR PUCCH(二)PUCCH format 2/3/4

继续看PUCCH2/3/4:PUCCH format 0和1所携带的信息bits少,UCI bits2bits,信息bit需要经过编码等过程下面分别来看。

ModemProtocol的博客 538

Flink(1):开发环境的搭建(Java和scala)

一、实现功能 流式开发Flink开发环境的搭建。 二、实现步骤:Java开发环境 【参考官网:https://ci.apache.org/projects/flink/flink-docs-release-1.7/dev/projectsetup/java_api_quickstart.html】 1.本地环境 (1)官网要求 Maven 3.0.4 (or higher) and ...

小蚯蚓的博客 2097

统信UOS丨开机无法进入系统 无法打开控制台访问权限,root账号被锁定(cannot open access to console, the root account is locked)

步骤四:分别打开文件发现Roota下的fstab就是我们要找的文件,打开查看Roota的属性发现其为挂载的磁盘nvme0n1p3。步骤三:按Win+E打开文件管理器在分区中查找/etc/fstab文件,发现Roota和Rootb下都有该文件。步骤二:按键盘Ctrl+Alt+F4,进入终端控制台,如下图所示输入startx回车,进入桌面。步骤一:找到UOS系统安装的U盘,选择U盘启动进入安装界面,如下图所示。步骤七:关机,拔出U盘,启动电脑,OK,问题解决。

Reyn_观极 1万+

flink项目pom文件

基于scala开发flink应用的pom文件 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http:/

JY631591678的博客 1892

anaconda navigator 卡在loading application界面一直没有反应解决办法

在打开anaconda navigator 程序的时候,遇到了2个问题。第一个问题:打开的时候弹出提示:There is an instance of Anaconda Navigator already running.第二个问题:程序一直卡在loading application界面一直没有反应。以下是我的解决办法,有效果。

猿小白的博客 4384

【skill】漫剧 AI 视频创作的知识库 + API 调用手册

方案适用场景在对话中使用,自动触发注入到任何 LLM(Cursor/Windsurf/Claude API)Python 模块集成到自动化管线/批量生成GitHub 又限速了,不过前几轮搜到的已经够用了。根据搜索结果,结合已分析过的项目,给你整理完整对比 🐮。

突围 984

Flink Maven 打包 Scala和Java混编

Flink Maven 打包 Scala和Java混编 今天在打包Flink Job的时候,虽然是打包成功了,但是提交到Flink上运行的时候报找不到类。一开始是找不到主类,后来在网上找了好多maven的打包配置,找不到主类的问题是好了。因为Flink Job中用到了ElasticSearch的Sink,发现ES的Sink底层都是用Java编写的,结果打包的时候打不进去,报找不到类的错误。最终结合了网上许多的maven配置,终于成功了。 下面我把pom.xml文件中build部分内容分享出来,希望可以帮到大

wFitting的博客 1158

5分钟用AI搞定顶刊级引言!掌握三段式结构+避坑要点,让你的Introduction更有说服力(附提示词)

说明你是怎么来填补这个缺口的,一句话概括你的研究,再简述你采用了什么新方法、新模型或新视角,也就是创新点,最后说明你的方案是怎么克服第二段提到的缺口的,带来了哪些贡献,注意要确保方案与第二段提到的缺口一一对应。以上三段式引言模板,是非常经典的问题导向型结构,相比传统的结构,这种结构更能吸引是审稿人的注意,希望这篇分享的模板能给在你写论文引言时,提供一点帮助。上一段写好后,就在前人研究的基础上,亮出自己的方案,借助AI说明自己的研究,用了什么新方法/框架/理论/视角来填补这个缺口的。

智能AI让学术科研更容易 745

Flink基础之配置Maven依赖、连接、库

目录 核心依赖和应用程序依赖 项目配置基础Maven依赖 添加Connector和库 依赖 Scala版本 Hadoop依赖 附录:用于构建具有依赖项的Jar的模板 使用Flink所需要的基础maven依赖包,还有一些数据来源的驱动,如Kafka Connector,还有保证Flink应用程序运行的Flink运行库。 核心依赖和应用程序依赖 Flink Core Dependen...

主要写大数据集群一线运维和学习工作经验 1万+

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

Scala 打包 flink 程序,找不到主类

在flink开发的时候,scala程序在打包编译的时候,进不来,但是在idea里面直接运行是没有问题的。找了下原因,需要引入scala的编译插件,mark下。 scala-maven-plugin <build> <plugins> <!-- 编译插件,将scala文件编译成class文件 --> <plugin> <groupId>net.alc

编程者说的博客专栏 926

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

Flink集群安装:Flink的scala程序打包和部署运行

日萌社 人工智能AI:Keras PyTorch MXNet TensorFlow PaddlePaddle 深度学习实战(不定时更新) flink下载 https://archive.apache.org/dist/flink/ flink-flink版本号-bin-scala_版本号.tgz:只能在flink集群执行 flink-flink版本号-bin-hadoop版本号-scala_版本号.tgz:可以打包flink的jar程序到yarn执行 1.安装 flink tar zx.

あずにゃん梓喵的博客 2727

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

使用IntelliJ IDEA+Maven开发Flink项目

对于熟悉Maven操作的读者来说,可以象上一节讲的那样,先在命令行用Maven命令快速生成Flink基本程序框架,然后导入到IDE中进一步开发。如果读者更熟悉IDE(例如,IntelliJ IDEA)的话,那么可以直接在IntelliJ IDEA中开发Maven程序。通过结合使用IntelliJ IDEA集成开发工具和Maven项目构建工具,我们可以方便快速地开发Flink项目。 一、在IntelliJ IDEA中创建Flink项目 第一步:启动IntelliJ IDEA,创建一个新的项目,如下图所示:

xiaolegeaizy的博客 7994

flink打包程序提交任务示例

工具 maven、idea、flink1.9-2.11scala 代码 pom.xml <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-inst...

qq_37135484的博客 1083

58、Flink 的项目配置使用 Maven 详解

Flink 的项目配置使用 Maven 详解

猫猫爱吃小鱼粮 2012
上一篇: Flink v1.6.1 官方文档学习 —《DataStream API 之概述》
下一篇: Flink v1.6.1 《Yarn 模式 高可用分布式集群部署》
Mathieu66
博客等级 码龄10年 68粉丝 43原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值