flink streamWordCount demo

flink 的 wordCount  流式计算的demo

 

package com.hbn.wc

import org.apache.flink.api.scala._
import org.apache.flink.streaming.api.scala.{DataStream, StreamExecutionEnvironment}

object StreamWordCount {

  def main(args: Array[String]): Unit = {


    val  env:StreamExecutionEnvironment = StreamExecutionEnvironment.createLocalEnvironment()
    //  并行度
    env.setParallelism(8)

    val inputStream:DataStream[String] = env.socketTextStream("localhost",7777)

    val  result :DataStream[(String,Int)] = inputStream
      .flatMap(_.split(" "))
      .filter( _.nonEmpty)
      .map((_,1))
      .keyBy(0)  //  以  第一个 字段 分组
      .sum(1)   //  以 第二个 字段 求和


    result.print()

    env.execute("stream word  count  job")


  }


}

启动后 执行结果 如图所示 

 

5> (you,1)
8> (ok,1)
4> (are,1)
6> (how,1)
5> (you,2)
4> (are,2)
5> (fine,1)
3> (hello,1)
7> (flink,1)
3> (hello,2)
2> (saprk,1)
3> (hello,3)

 

 

### Flink 示例程序演示 #### 使用Flink DataStream API进行流式数据处理的词频统计示例 为了展示如何利用 Apache Flink 进行实时数据分析,这里提供了一个简单的例子——从 Kafka 中读取消息并执行单词频率计数[^1]。 ```java import org.apache.flink.api.common.serialization.SimpleStringSchema; import org.apache.flink.streaming.api.datastream.DataStream; import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment; import org.apache.flink.streaming.connectors.kafka.FlinkKafkaConsumer; import java.util.Properties; public class WordCountFromKafka { public static void main(String[] args) throws Exception { final StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(); Properties properties = new Properties(); properties.setProperty("bootstrap.servers", "localhost:9092"); properties.setProperty("group.id", "test"); FlinkKafkaConsumer<String> kafkaSource = new FlinkKafkaConsumer<>( "input-topic", new SimpleStringSchema(), properties); DataStream<String> stream = env.addSource(kafkaSource); // 执行Word Count逻辑 DataStream<Tuple2<String, Integer>> wordCounts = stream .flatMap(new Tokenizer()) .keyBy(value -> value.f0) .sum(1); wordCounts.print(); env.execute("Word Count from Kafka Example"); } } ``` 此代码片段展示了如何配置一个基于 Java 的 Flink 应用程序来连接到 Kafka 主题,并对收到的消息应用基本的文字分割和平铺映射操作以计算每个唯一词语的数量。最后的结果会被打印出来供进一步分析或存储。 对于想要更深入了解这个过程的人而言,在启动上述应用程序前还需要完成一些准备工作: - **安装和设置好本地环境**:确保已经正确设置了 JDK 和 Maven 或 Gradle 构建工具;下载并解压最新版本的 Flink 发行版文件[^5]。 - **准备输入源**:在这个特定的例子中,需要有一个正在运行的 Kafka 实例以及相应的主题用于发送测试消息给 Flink 流处理器。 - **编译项目并将作业提交至集群**:可以通过命令 `mvn clean package` 来构建 JAR 文件,之后使用类似于 flink run -c com.example.WordCountFromKafka target/your-flink-app.jar 命令向 Flink 提交任务[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值