flink原理和基本功能是什么
flink原理和基本功能是什么,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。
成都创新互联公司从2013年成立,先为长洲等服务建站,长洲等地企业,进行企业商务咨询服务。为长洲企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。
有界与无界
有界数据集
具有时间边界的数据集,处理过程中数据一定会在某个时间内开始和结束。
无界数据集
数据只有开始没有边界。
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
设定运行环境,支持动态(本地和线上)启动、本地启动、远程线上启动三种。
StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(); //指定处理方式批处理、流处理、自适应 env.setRuntimeMode(RuntimeExecutionMode.AUTOMATIC);
指定数据源
DataSettext = env.readTextFile("/path/to/file");
操作数据集
DataSet> counts = text.flatMap(_.toLowerCase.split(" ")) //实行map转换 .filter(_.nonEmpty) //过滤控制 .map((_,1)) //执行map转换,转换为key-value .keyBy(0) //按照指定第一个字段key进行分区, .sum(1); //分区后按第二个字段求和
指定结果输出
counts.writeAsCsv(outputPath, "\n", " ");
指定名称并触发
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原理和基本功能是什么的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注创新互联行业资讯频道,感谢各位的阅读!
本文标题:flink原理和基本功能是什么
转载注明:http://azwzsj.com/article/jopidp.html