virtualBox虚拟机在Linux操作系统中安装IntelliJ IDEA,然后使用IntelliJ IDEA工具开发WordCount程序,并打包成JAR文件,提交到Flink中运行
时间: 2024-12-31 20:21:34 浏览: 8
### 在VirtualBox Linux虚拟机中使用IntelliJ IDEA创建并打包Java WordCount项目
#### 创建WordCount Java Project
为了在Linux环境下利用IntelliJ IDEA创建一个新的Java项目用于实现WordCount功能,需先启动已安装好的IDEA软件。接着,在欢迎界面选择“Create New Project”,指定项目的名称为`WordCountProject`以及保存路径[^1]。
```bash
cd ~/IdeaProjects/
```
#### 添加Flink依赖到项目配置文件
对于基于Maven构建工具管理的项目来说,编辑`pom.xml`来引入必要的Apache Flink库是非常重要的一步。这使得开发者能够访问Flink API完成分布式数据处理逻辑的设计与编码工作。
```xml
<dependencies>
<!-- https://mvnrepository.com/artifact/org.apache.flink/flink-java -->
<dependency>
<groupId>org.apache.flink</groupId>
<artifactId>flink-java</artifactId>
<version>1.14.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.flink/flink-streaming-java_2.12 -->
<dependency>
<groupId>org.apache.flink</groupId>
<artifactId>flink-streaming-java_2.12</artifactId>
<version>1.14.0</version>
</dependency>
<!-- Add other dependencies as needed -->
</dependencies>
```
#### 编写WordCount应用程序代码
按照标准输入输出流的方式编写简单的单词计数器应用实例。此部分涉及到了核心业务逻辑的具体实现细节,即读取文本源、解析每条记录中的词语并将它们映射成键值对形式最后统计各不相同词条出现次数的过程。
```java
import org.apache.flink.api.common.functions.FlatMapFunction;
import org.apache.flink.api.java.DataSet;
import org.apache.flink.api.java.ExecutionEnvironment;
import org.apache.flink.api.java.tuple.Tuple2;
import org.apache.flink.util.Collector;
public class WordCount {
public static void main(String[] args) throws Exception {
final ExecutionEnvironment env = ExecutionEnvironment.getExecutionEnvironment();
DataSet<String> text = env.fromElements(
"To be, or not to be,--that is the question:--",
"Whether 'tis nobler in the mind to suffer"
);
DataSet<Tuple2<String, Integer>> counts =
text.flatMap(new Tokenizer())
.groupBy(0)
.sum(1);
counts.print();
}
public static final class Tokenizer implements FlatMapFunction<String, Tuple2<String, Integer>> {
@Override
public void flatMap(String value, Collector<Tuple2<String, Integer>> out) {
String[] tokens = value.toLowerCase().split("\\W+");
for (String token : tokens) {
if (token.length() > 0) {
out.collect(new Tuple2<>(token, 1));
}
}
}
}
}
```
#### 构建可执行JAR包
当所有的源码都已经准备就绪之后,可以通过命令行或者直接借助于IDE内置的功能来进行编译操作从而得到最终可以分发部署的目标产物——带有manifest属性声明入口类名信息的标准jar档案文件。
```bash
mvn clean package -DskipTests=true
```
上述指令会清理旧有的build目录,并重新编译整个工程结构下的所有模块;同时跳过单元测试环节加快整体进度直至成功产出位于target子文件夹内的`.jar`压缩文档。
#### 提交作业给Flink集群运行
一旦拥有了封装完毕的应用程序二进制镜像制品,则可通过如下所示CLI客户端命令向远程或本地模式下运作着的服务端发起请求进而触发任务调度机制自动加载解释执行用户自定义脚本所描述的数据转换管道链路图谱。
```bash
flink run /path/to/target/wordcount.jar
```
确保提前设置好环境变量指向正确的FLINK_HOME位置以便调用对应版本号段内附带提供的binaries集合里的shell scripts辅助工具集。
阅读全文