Flink入门

本文涉及的产品
实时计算 Flink 版,5000CU*H 3个月
简介: Flink入门

文章目录

前言

Apache Flink是一个框架和分布式处理引擎,用于无界和有界数据流的有状态计算。Flink被设计成可以在所有常见的集群环境中运行,以内存中的速度和任何规模执行计算。

2add5804e5b844119e281fad955328af.png

Flink的优点:

  • 批流一体化.
  • 同时支持高吞吐、低延迟、高性能.
  • 支持事件时间(Event Time).
  • 支持有状态计算.
  • 支持高度灵活的窗口(Window)操作.

1.wordcount案例

1.1 java版本

public static void main( String[] args ) throws Exception {

     

       ExecutionEnvironment env = ExecutionEnvironment.getExecutionEnvironment();

       DataSource<String> ds = env.readTextFile("./data/data.txt");

       //切割单词

       FlatMapOperator<String, String> words = ds.flatMap((String lines, Collector<String> collection) -> {

           String[] arr = lines.split(" ");

           for (String s : arr) {

               collection.collect(s);

           }

       }).returns(Types.STRING);

       //统计单词

       MapOperator<String, Tuple2<String, Long>> WordsDS =

               words.map(word -> new Tuple2<>(word, 1L)).returns(Types.TUPLE(Types.STRING, Types.LONG));

       WordsDS.groupBy(0).sum(1).print();

   }

输出:

(flink1,1)

(flink,1)

(hello,3)

(spark,1)

1.2 流式处理

   public static void main( String[] args ) throws Exception {

       //1.创建流式处理环境

       StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();

       //读取文件数据

       DataStreamSource<String> ds = env.readTextFile("./data/data.txt");

      //切分单词

       SingleOutputStreamOperator<Tuple2<String, Long>> wordDs=

               ds.flatMap((String line, Collector<Tuple2<String, Long>> collector) -> {

                   String[] words = line.split(" ");

                   for (String word : words) {

                       collector.collect(Tuple2.of(word, 1L));

                   }

               }).returns(Types.TUPLE(Types.STRING, Types.LONG));

       wordDs.keyBy(tp->tp.f0).sum(1).print();

       env.execute();

   }

输出

1> (spark,1)

5> (hello,1)

13> (flink,1)

9> (flink1,1)

5> (hello,2)

5> (hello,3)

1.3 scala版本

 

//

val env: ExecutionEnvironment = ExecutionEnvironment.getExecutionEnvironment

//导入隐式转换

import org.apache.flink.api.scala._

//加载文件

val linesDS: DataSet[String] = env.readTextFile("./data/data.txt")

//输出

linesDS.flatMap(line => {

 line.split(" ")

}).map((_, 1)).groupBy(0).sum(1).print()

1.4 scala流式处理

//创建环境

val env: StreamExecutionEnvironment = StreamExecutionEnvironment.getExecutionEnvironment

//2导入隐式转换

import org.apache.flink.streaming.api.scala._

//读取文件

val ds: DataStream[String] = env.readTextFile("./data/data.txt")

//统计

ds.flatMap(line=>{line.split(" ")})

 .map((_,1))

 .keyBy(_._1)

 .sum(1)

 .print()

//执行

env.execute()


相关实践学习
基于Hologres轻松玩转一站式实时仓库
本场景介绍如何利用阿里云MaxCompute、实时计算Flink和交互式分析服务Hologres开发离线、实时数据融合分析的数据大屏应用。
Linux入门到精通
本套课程是从入门开始的Linux学习课程,适合初学者阅读。由浅入深案例丰富,通俗易懂。主要涉及基础的系统操作以及工作中常用的各种服务软件的应用、部署和优化。即使是零基础的学员,只要能够坚持把所有章节都学完,也一定会受益匪浅。
相关文章
|
8月前
|
Java 流计算
【极数系列】Flink搭建入门项目Demo & 秒懂Flink开发运行原理(05)
【极数系列】Flink搭建入门项目Demo & 秒懂Flink开发运行原理(05)
280 3
|
Java Linux API
flink入门-流处理
flink入门-流处理
168 0
|
存储 Java Linux
10分钟入门Flink--安装
本文介绍Flink的安装步骤,主要是Flink的独立部署模式,它不依赖其他平台。文中内容分为4块:前置准备、Flink本地模式搭建、Flink Standalone搭建、Flink Standalong HA搭建。
10分钟入门Flink--安装
|
分布式计算 Java API
Flink教程(04)- Flink入门案例
Flink教程(04)- Flink入门案例
184 0
|
数据处理 Apache 流计算
实时计算引擎 Flink:从入门到深入理解
本篇详细介绍了Apache Flink实时计算引擎的基本概念和核心功能。从入门到深入,逐步介绍了Flink的数据源与接收、数据转换与计算、窗口操作以及状态管理等方面的内容,并附带代码示例进行实际操作演示。通过阅读本文,读者可以建立起对Flink实时计算引擎的全面理解,为实际项目中的实时数据处理提供了有力的指导和实践基础。
2348 2
|
8月前
|
分布式计算 监控 API
flink 入门编程day02
flink 入门编程day02
|
8月前
|
SQL 关系型数据库 Apache
Apache Doris 整合 FLINK CDC 、Paimon 构建实时湖仓一体的联邦查询入门
Apache Doris 整合 FLINK CDC 、Paimon 构建实时湖仓一体的联邦查询入门
1458 3
|
存储 缓存 分布式计算
Flink教程(02)- Flink入门(下)
Flink教程(02)- Flink入门(下)
129 0
|
SQL 消息中间件 API
Flink教程(02)- Flink入门(上)
Flink教程(02)- Flink入门(上)
225 0
|
分布式计算 大数据 Hadoop
终于学完了阿里云大数据架构师推荐的Flink入门与实战PDF
Flink项目是大数据计算领域冉冉升起的一颗新星。大数据计算引擎的发展经历了几个过程,从第1代的MapReduce,到第2代基于有向无环图的Tez,第3代基于内存计算的Spark,再到第4代的Flink。因为Flink可以基于Hadoop进行开发和使用,所以Flink并不会取代Hadoop,而是和Hadoop紧密结合。
终于学完了阿里云大数据架构师推荐的Flink入门与实战PDF