温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

flink原理和基本功能是什么

发布时间:2021-11-23 14:05:46 来源:亿速云 阅读:222 作者:柒染 栏目:大数据

flink原理和基本功能是什么,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

有界与无界

有界数据集

  • 具有时间边界的数据集,处理过程中数据一定会在某个时间内开始和结束。

无界数据集

  • 数据只有开始没有边界。

flink接口结构

FLink SQL

  • SQL API支持批和流的计算。

Flink Table

  • Table API将内存中的DataStream和DataSet数据集在原有的基础上增加Schema信息,将数据类型统一抽象成表结构,然后通过Table API接口处理对应的数据集。

  • SQL API可以直接查询Table API注册表的数据。

  • Tabel API 提供大量接口如GroupByKey、Join等,并支持和DataStream和DataSet的相互转换。

DataStream

  • 有编程经验者使用,1.12版本开始DataStream处理流批数据,DataSet接口逐步废除。

Stateful Stream Processing API

  • Flink最底层接口,灵活性非常强,可实现复杂的流式计算逻辑,使用成本较高,一般企业级用户使用它进行二次开发或深度封装。

程序结构 DataStream API

  1. 设定运行环境,支持动态(本地和线上)启动、本地启动、远程线上启动三种。

StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
//指定处理方式批处理、流处理、自适应
env.setRuntimeMode(RuntimeExecutionMode.AUTOMATIC);
  1. 指定数据源

DataSet<String> text = env.readTextFile("/path/to/file");
  1. 操作数据集

DataSet<Tuple2<String, Integer>> counts =
        text.flatMap(_.toLowerCase.split(" ")) //实行map转换
        .filter(_.nonEmpty)  //过滤控制
        .map((_,1)) //执行map转换,转换为key-value 
        .keyBy(0)  //按照指定第一个字段key进行分区,
        .sum(1); //分区后按第二个字段求和
  1. 指定结果输出

counts.writeAsCsv(outputPath, "\n", " ");
  1. 指定名称并触发

 env.execute("Streaming Count");

数据类型

  • flink有丰富的数据类型支持,统一由TypeInformation定义。支持与java、scala任意数据类型转换。

原生数据类型

  • BasicTypeInfo类型支持任意java基础类型和String类型。

java Tuples

  • TupleTypeInfo描述Tuple类型数据,2019年版本支持字段上线为25个。

scala Case class

  • CaseClassTypeInfo支持任意Scala Case class,包括Scala tuples,2019年支持最大字段数为22个。

POJOs类型

  • PojoTypeInfo描述任意POJO类型,

    • POJO类必须是public修饰的非内部类。

    • POJO类必须含有默认空构造器

    • PoJO类所有字段必须是public,类型必须是flink支持的。

Flink Value类型

  • Value数据类型实现了org.apache.flink.types.Value,其中包含read()和write()两种序列化和反序列化操作。目前内建类型有IntValue、DoubleValue、StringValue。

特殊数据类型

  • scala中的List、Map、Either、Option、Try,java中Either,hadoop中Writable。

Flink作为新一代计算引擎,在实时计算领域有着及其重要的地位,同时也有这复杂的概念,时间窗口、水位线等,学习并理解成本不低。

看完上述内容,你们掌握flink原理和基本功能是什么的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注亿速云行业资讯频道,感谢各位的阅读!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI