从0到1搭建flink程序-WordCount(图文/详细/mac)

server/2024/11/29 4:35:02/

目录

一、目标以及前置资料

1.1 目标

1.2 前置资料

二、实现

2.1 搭建流程

2.2 调试

 

参考


一、目标以及前置资料

1.1 目标

初步感受flink任务,从0到1快速搭建一个flink程序

1.2 前置资料

1、下载jdk:Mac 安装jdk_mac 安装jdk 1.8-CSDN博客

2、下载homebrew:打开terminal执行下面指令

/bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"

如图:

3、下载maven:Mac 安装Maven的几种方法和操作步骤__ddz的技术博客_51CTO博客

4、下载flink:打开terminal执行下面安装指令

brew install apache-flink

查看安装位置,记下安装目录(后面用)

brew info apache-flink

二、实现

2.1 搭建流程

1、进入安装目录,输入下面指令,启动 flink 集群, 集群启动以后,进入 web 页面:http://localhost:8081/

cd 到你下载的目录
./libexec/bin/start-cluster.sh

2、在你的目录下(自己选在哪个目录)构建项目,再进入项目下

curl https://flink.apache.org/q/quickstart.sh | bash -s 1.18.0
cd quickstart

查看目录结构,输入tree, 如果电脑里没有tree,就brew install tree,下载一个

再次进入,修改目录/quickstart/src/main/java/org/myorg/quickstart下文件DataStreamJob.java

cd src/main/java/org/myorg/quickstart/

3、修改DataStreamJob.java,可以用idea,可以用vi,随便,文件内容复制粘贴如下

package org.myorg.quickstart;import org.apache.flink.api.common.functions.FlatMapFunction;
import org.apache.flink.api.java.tuple.Tuple2;
import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment;
import org.apache.flink.util.Collector;
import org.apache.flink.api.common.RuntimeExecutionMode;public class DataStreamJob {public static void main(String[] args) throws Exception {StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();env.setRuntimeMode(RuntimeExecutionMode.STREAMING);env.socketTextStream("127.0.0.1", 9888).flatMap(new LineSplitter()).keyBy(0).sum(1).print();env.execute("WordCount");}public static final class LineSplitter implements FlatMapFunction<String, Tuple2<String, Integer>> {@Overridepublic void flatMap(String s, Collector<Tuple2<String, Integer>> collector) {String[] tokens = s.toLowerCase().split("\\W+");for (String token : tokens) {if (token.length() > 0) {collector.collect(new Tuple2<>(token, 1));}}}}
}

上述代码使用 DataStream API 构建了一个 Flink 应用,数据源(source)为本地的 socket  端口(端口可以自己改代码,我这里是9888),经过 flatMap、keyBy、sum 三个转换操作之后,最后打印到标准输出流。整体流程如下图:

4、运行

启动 socket 连接,监听 9888 端口:

nc -lk 9888

打包,点右侧m,再clean,再package

生成文件会在/quickstart/target下,打开terminal,在最一开始quickstart目录下执行,运行flink任务

flink run target/quickstart-0.1.jar 

回到http://localhost:8081

运行正常,在终端输入一些字符

flink任务会显示输出

2.2 调试

Q1:电脑当时用9000端口始终连不上,可能是被占用了/被禁用,如何明确端口是否可用

打开两个终端,一个指令telnet 127.0.0.1 10000,另外一个nc -lk 10000 (telnet指令没有还是可以brew install telnet)

发送一些信息,上图显示收发正常,表示连接没问题

参考

Mac系统下一键安装Homebrew方法(本人亲测有效)_homebrew 一键安装-CSDN博客

从零开始快速构建自己的Flink应用-CSDN博客


http://www.ppmy.cn/server/137648.html

相关文章

vue 果蔬识别系统百度AI识别vue+springboot java开发、elementui+ echarts+ vant开发

编号&#xff1a;R03-果蔬识别系统 简介&#xff1a;vuespringboot百度AI实现的果蔬识别系统 版本&#xff1a;2025版 视频介绍&#xff1a; vuespringboot百度AI实现的果蔬识别系统前后端java开发&#xff0c;百度识别&#xff0c;带H5移动端&#xff0c;mysql数据库可视化 1 …

Nginx负载均衡配置详解

Nginx 是一个高性能的 HTTP 和反向代理服务器&#xff0c;广泛用于负载均衡。它支持多种负载均衡策略&#xff0c;可以根据不同的需求进行配置。以下是 Nginx 负载均衡的详细配置和使用示例。 一、负载均衡基本概念 负载均衡是将请求分配到多个后端服务器上&#xff0c;以提高…

【Git】Git常用命令

目录 1 前言2 git命令2.1 branch2.2 checkout2.3 pull and push2.4 config2.4.1 Proxy 2.5 tag2.6 rebase2.7 patch2.8 remote2.9 submodule2.10 rm2.10 gitignore2.11 某个commit更改了哪些文件2.12 clean 3 结束语 1 前言 本章记录总结在使用git过程中常用的一些命令&#x…

适合视频搬运的素材网站推荐——短视频素材下载宝库

对于摄影爱好者和短视频创作者来说&#xff0c;找到适合搬运和创作的视频素材至关重要。无论是用于丰富画面、增加背景细节&#xff0c;还是提升作品的视觉吸引力&#xff0c;这些素材网站都能为你的创作提供极大帮助。今天&#xff0c;我将为大家推荐几个优质的素材网站&#…

C9800 bundle转换为install

1.基本说明 We recommend that you use install mode for the software upgrade. 如果模式是Bundle模式&#xff0c;可以通过如下操作转换&#xff1a; 确认如下命令&#xff1a; show version show version | include Installation mode install remove inactive 2.操作…

基于GA遗传优化的风光储微电网削峰填谷能量管理系统matlab仿真

目录 1.课题概述 2.系统仿真结果 3.核心程序与模型 4.系统原理简介 4.1 削峰填谷的基本概念与意义 4.2 GA优化 5.完整工程文件 1.课题概述 基于GA遗传优化的风光储微电网削峰填谷能量管理系统matlab仿真。通过遗传算法优化风光储微电网的充放电控制过程&#xff0c;然后…

python opencv2

二、图像预处理 1、图像翻转 cv2.flip(src, flipCode) &#xff1a;flipCode &#xff1a;0&#xff1a;沿 X 轴翻转&#xff08;垂直翻转&#xff09;&#xff1b;1&#xff1a;沿 Y 轴翻转&#xff08;水平翻转&#xff09;&#xff0c;-1&#xff1a;沿 X 轴和 Y 轴翻转&am…

车道区域分割车道线检测系统源码&数据集全套:改进yolo11-SEAMHead

改进yolo11-fasternet等200全套创新点大全&#xff1a;车道区域分割车道线检测系统源码&#xff06;数据集全套 1.图片效果展示 项目来源 人工智能促进会 2024.10.28 注意&#xff1a;由于项目一直在更新迭代&#xff0c;上面“1.图片效果展示”和“2.视频效果展示”展示的系…