java:
public static void main(String[] args) throws Exception{
//1. 创建流式处理的执行环境
// StreamExecutionEnvironment env = StreamExecutionEnvironment.createLocalEnvironment();
StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
// 参数中提取主机名和端口号
ParameterTool parameterTool = ParameterTool.fromArgs(args);
String host = parameterTool.get("host");
int port = parameterTool.getInt("port");
//2. 读取文本流
DataStreamSource<String> stringDataStreamSource = env.socketTextStream(host, port);
SingleOutputStreamOperator<String> filter = stringDataStreamSource.filter(new FilterFunction<String>() {
@Override
public boolean filter(String s) throws Exception {
return false;
}
});
// 3. 转换计算
SingleOutputStreamOperator<Tuple2<String, Long>> returns =
stringDataStreamSource.flatMap((String line, Collector<Tuple2<String, Long>> out) -> {
String[] words = line.split(" ");
for (String v : words) {
out.collect(Tuple2.of(v, 1L));
}
}).returns(Types.TUPLE(Types.STRING, Types.LONG));
// 4.分组操作
KeyedStream<Tuple2<String, Long>, String> tuple2StringKeyedStream = returns.keyBy(data -> data.f0);
// 5.求和
SingleOutputStreamOperator<Tuple2<String, Long>> sum = tuple2StringKeyedStream.sum(1);
// 6. 打印
sum.print();
// 7.启动执行
env.execute();
// 启动之前 需要 一个linux 服务器
// 启动linux 执行 nc -lk 7777
// 24 行的IP 和 端口 要对应
// windows 下载 netcat
// 执行 nc -l -p 7777
}
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://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.flink</groupId>
<artifactId>flik-demo</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<flink.version>1.13.0</flink.version>
<java.version>1.8</java.version>
<scala.binary.version>2.12</scala.binary.version>
<slf4j.version>1.7.30</slf4j.version>
</properties>
<dependencies>
<!-- 引入flink 相关依赖 -->
<dependency>
<groupId>org.apache.flink</groupId>
<artifactId>flink-java</artifactId>
<version>${flink.version}</version>
</dependency>
<dependency>
<groupId>org.apache.flink</groupId>
<artifactId>flink-streaming-java_${scala.binary.version}</artifactId>
<version>${flink.version}</version>
</dependency>
<!-- flink 的客户端-->
<dependency>
<groupId>org.apache.flink</groupId>
<artifactId>flink-clients_${scala.binary.version}</artifactId>
<version>${flink.version}</version>
</dependency>
<!-- 日志管理 相关依赖-->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>${slf4j.version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>${slf4j.version}</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-to-slf4j</artifactId>
<version>2.14.0</version>
</dependency>
</dependencies>
</project>
注意:必须先启动 端口,才能启动程序
启动之前 需要 一个linux 服务器 启动linux 执行 nc -lk 7777 24 行的IP 和 端口 要对应 windows 下载 netcat 执行 nc -l -p 7777