您好,登录后才能下订单哦!
flink原理和基本功能是什么,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。
具有时间边界的数据集,处理过程中数据一定会在某个时间内开始和结束。
数据只有开始没有边界。
SQL API支持批和流的计算。
Table API将内存中的DataStream和DataSet数据集在原有的基础上增加Schema信息,将数据类型统一抽象成表结构,然后通过Table API接口处理对应的数据集。
SQL API可以直接查询Table API注册表的数据。
Tabel API 提供大量接口如GroupByKey、Join等,并支持和DataStream和DataSet的相互转换。
有编程经验者使用,1.12版本开始DataStream处理流批数据,DataSet接口逐步废除。
Flink最底层接口,灵活性非常强,可实现复杂的流式计算逻辑,使用成本较高,一般企业级用户使用它进行二次开发或深度封装。
设定运行环境,支持动态(本地和线上)启动、本地启动、远程线上启动三种。
StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(); //指定处理方式批处理、流处理、自适应 env.setRuntimeMode(RuntimeExecutionMode.AUTOMATIC);
指定数据源
DataSet<String> text = env.readTextFile("/path/to/file");
操作数据集
DataSet<Tuple2<String, Integer>> 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类型。
TupleTypeInfo描述Tuple类型数据,2019年版本支持字段上线为25个。
CaseClassTypeInfo支持任意Scala Case class,包括Scala tuples,2019年支持最大字段数为22个。
PojoTypeInfo描述任意POJO类型,
POJO类必须是public修饰的非内部类。
POJO类必须含有默认空构造器
PoJO类所有字段必须是public,类型必须是flink支持的。
Value数据类型实现了org.apache.flink.types.Value,其中包含read()和write()两种序列化和反序列化操作。目前内建类型有IntValue、DoubleValue、StringValue。
scala中的List、Map、Either、Option、Try,java中Either,hadoop中Writable。
Flink作为新一代计算引擎,在实时计算领域有着及其重要的地位,同时也有这复杂的概念,时间窗口、水位线等,学习并理解成本不低。
看完上述内容,你们掌握flink原理和基本功能是什么的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注亿速云行业资讯频道,感谢各位的阅读!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。