【Flink、java】

依赖 

<dependency>
      <groupId>org.apache.flink</groupId>
      <artifactId>flink-streaming-java_2.11</artifactId>
      <version>1.14.6</version>
    </dependency>
    <dependency>
      <groupId>org.apache.flink</groupId>
      <artifactId>flink-clients</artifactId>
      <version>${flink.version}</version>
    </dependency>

 快速上手

1.增添依赖

2.在根目录,添加input文件

 DataSet API实现wordcount(已经不能用了)

package org.example;
/*
 * @Auther:huangzhiyang
 * @Date:2023/9/26
 * @Description:wc
 */

import org.apache.flink.api.common.functions.FlatMapFunction;
import org.apache.flink.api.java.ExecutionEnvironment;
import org.apache.flink.api.java.operators.AggregateOperator;
import org.apache.flink.api.java.operators.DataSource;
import org.apache.flink.api.java.operators.FlatMapOperator;
import org.apache.flink.api.java.operators.UnsortedGrouping;
import org.apache.flink.api.java.tuple.Tuple2;
import org.apache.flink.util.Collector;

public class wordCountBatchDemo {
    public static void main(String[] args) throws Exception {
        // TODO: 2023/9/26 创建执行环境
        ExecutionEnvironment env = ExecutionEnvironment.getExecutionEnvironment();

        // TODO: 2023/9/26 读取数据
        DataSource<String> lineDS = env.readTextFile("input/word.txt");
        // TODO: 2023/9/26 切分转换
        FlatMapOperator<String, Tuple2<String, Integer>> wordAndOne = lineDS.flatMap(new FlatMapFunction<String, Tuple2<String, Integer>>() {
            @Override
            public void flatMap(String s, Collector<Tuple2<String, Integer>> collector) throws Exception {
                // TODO: 2023/9/26 按照空格切分单词
                String[] words = s.split(" ");
                // TODO: 2023/9/26 将单词转为tuple2
                for (String word : words) {
                    Tuple2<String, Integer> tuple2 = Tuple2.of(word, 1);
                    // TODO: 2023/9/26 使用collector向下游发送数据
                    collector.collect(tuple2);
                }
            }
        });
        // TODO: 2023/9/26 按照word分组
        UnsortedGrouping<Tuple2<String, Integer>> wordAndOneGroupBY = wordAndOne.groupBy(0);
        // TODO: 2023/9/26 各分组内聚合
        AggregateOperator<Tuple2<String, Integer>> sum = wordAndOneGroupBY.sum(1);//1是位置,表示第二个元素
        // TODO: 2023/9/26 输出
        sum.print();
    }
}

Flink是一个流式处理框架,它可以用于处理实时数据流。在Java开发中,可以使用Flink来构建和执行各种数据处理任务。在Flink的学习笔记中,大部分的代码示例都是使用Java编写的,因为作者本人是Java开发工程师。不过,也会涉及到其他编程语言,比如Scala等。 在使用Flink进行开发时,你可以根据需求自定义数据源。一种常见的做法是实现SourceFunction接口,并重写run方法和cancel方法。例如,可以创建一个DemoTransactionSource类来实现自定义数据源,该类继承自SourceFunction,并在run方法中发射元素(数据)。 在Flink中还有一个重要的概念是累加器。累加器用于统计任务在运行过程中的情况,比如处理了多少条数据。常见的累加器实现有IntCounter、LongCounter和DoubleCounter。你可以通过在函数中使用累加器来增加其值,并在作业执行完毕后获取累加器的结果。例如,可以使用IntCounter作为累加器,在数据处理过程中使用counter.add(1)来增加累加器的值,然后在作业执行完毕后通过JobExecutionResult对象的getAccumulatorResult方法获取累加器的结果。 总结起来,如果你想在Java中使用Flink进行流式处理,你可以学习Flink的相关知识,并根据需求来自定义数据源和使用累加器来统计任务的情况。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [Flink - Java篇](https://blog.csdn.net/weixin_48518621/article/details/123189828)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

岩塘

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值