029-89353355
乐鱼体育直播下载 contact us
手机:18991830957
座机:029-89353355
Q Q:359316042
邮箱:xr@x-barcode.com
地址:西安市雁塔区雁塔西路158号双鱼大厦A座13层
企业公众号
产品介绍
DDL(Data Definition Language):数据定义语言,用来定义数据库对象(库,表,列等)。
2、Flink被称作流批一体,从哪个版本开始,真正实现流批一体的?从1.9.0版本开始,引入了阿里巴巴的 Blink ,对 FIink TabIe & SQL 模块做了重大的重构,保留了 Flink Planner 的同时,引入了 Blink PIanner,没引入以前,Flink 没考虑流批作业统一,针对流批作业,底层实现两套代码,引入后,基于流批一体理念,重新设计算子,以流为核心,流作业和批作业最终都会被转为 transformation。
Calcite 一种动态数据管理框架,它具备很多典型数据库管理系统的功能 如SQL 解析、 SQL 校验、 SQL 查询优化、 SQL 生成以及数据连接查询等,但是又省略了一些关键的功能,如 Calcite并不存储相关的元数据和基本数据,不完全包含相关处理数据的算法等。
有状态的校验:即通过与元数据结合验证 SQL 中的 Schema、Field、 Function 是否存在,输入输出类型是否匹配等。
对上个步骤的输出(RelNode ,逻辑计划树)进行优化,得到优化后的物理执行计划,优化有两种:基于规则的优化 和 基于代价的优化,后面会详细介绍。
将物理执行计划生成为在特定平台/引擎的可执行程序,如生成符合 MySQL 或 Oracle 等不同平台规则的 SQL 查询语句等。
在Flink 或者其他使用 Calcite 的大数据引擎中,一般到 SQL 查询优化即结束,由各个平台结合 Calcite SQL 代码生成 和 平台实现的代码生成,将优化后的物理执行计划组合成可执行的代码,然后在内存中编译执行。
5、Flink SQL 处理流程说一下?下面举个例子,详细描述一下Flink Sql的处理流程,如下图所示:
(2)生成的 SqlNode 抽象语法树,他是一个未经验证的抽象语法树,这时 SQL Validator 会获取 Flink Catalog 中的元数据信息来验证 sql 语法,元数据信息检查包括表名,字段名,函数名,数据类型等检查。然后生成一个校验后的SqlNode。
(3)到达这步后,只是将 SQL 解析到 java 数据结构的固定节点上,并没有给出相关节点之间的关联关系以及每个节点的类型信息。
(4)第4步将执行 Optimize 操作,按照预定义的优化规则 RelOptRule 优化逻辑计划。
先解析,然后验证,将SqlNode转化为Operation来创建表,然后调用rel方法将sqlNode变成 逻辑计划 (RelNodeTree)紧接着对逻辑计划进行优化;
11、Flink SQL 1.11 新增了实时数仓功能,介绍一下?Flink1.11 版本新增的一大功能是实时数仓,可以实时的将kafka中的数据插入Hive中,传统的实时数仓基于 Kafka+ Flinkstreaming,定义全流程的流计算作业,有着秒级甚至毫秒的实时性,但实时数仓的一个问题是历史数据只有 3-15天,无法在其上做 Ad-hoc的查询。
12、Flink-Hive实时写数据介绍下?StreamingWrite,从kafka 中实时拿到数据,使用分区提交将数据从Kafka写入Hive表中,并运行批处理查询以读取该数据。
14、Flink-Hive实时写数据时,如何保证已经写入分区的数据何时才能对下游可见呢?如下图所示:
首先可以看一下,在实时的将数据存储到Hive数仓中,FileSystemConnector 为了与 Flink-Hive集成的大环境适配,最大的改变就是分区提交,官方文档给出的,分区可以采取日期 + 小时的策略,或者时分秒的策略。
但选择process-time触发机制会有缺陷,就是当数据迟到或者程序失败重启时,数据不能按照事件时间被归入正确分区。所以 一般会选择 partition-time。
17、如何保证已经写入分区的数据对下游可见的标志问题(源码分析)在源码中,主要涉及PartitionCommitPolicy类,如下图所示:
浏览商品—加入购物车—创建订单—支付完成—发货—收货,事件流形成的模式。
如下图所示:我们指定“方块、圆”为基本规则的事件,在输入的原始流中,将这些事件作为一个结果流输出来。
Flink CEP SQL 语法 是通过SQL方式进行复杂事件处理,但是与 Flink SQL语法也不太相同,其中包含许多规则。
20、编写一个CEP SQL案例,如银行卡盗刷通过Flink CEP SQL 写的关于金融场景 银行卡盗刷案例。
案例介绍:在金融场景中,有时会出现银行卡盗刷现象,犯罪分子利用互联网等技术,在间隔10分钟或者更短时间内,使一张银行卡在不同的两个地方出现多次刷卡记录,这从常规操作来说,在间隔时间很多的情况下,用户是无法同时在两个城市进行刷卡交易的,所以出现这种问题,就需要后台做出触发报警机制。
要求:当相同的cardId在十分钟内,从两个不同的Location发生刷卡现象,触发报警机制,以便检测信用卡盗刷现象。
该字段是CEP SQL 的前提条件,用于生成一个追加表,所有的 CEP SQL都是书写在这里面。
CEP SQL 的类为Pattern,检测在10分钟内两个地方出现刷卡现象,所以定义两个事件:
22、Flink CDC原理介绍一下在最新CDC 调研报告中,Debezium 和 Canal 是目前最流行使用的 CDC 工具,这些 CDC 工具的核心原理是抽取数据库日志获取变更。在经过一系列调研后,目前Debezium (支持全量、增量同步,同时支持 MySQL、PostgreSQL、Oracle 等数据库),使用较为广泛。
23、通过CDC设计一种Flink SQL 采集+计算+传输(ETL)一体化的实时数仓设计图如下:
FlinkSql Gateway是Flink集群的“任务网关”,支持以restapi 的形式提交查询、插入、删除等任务,如下图所示:
(3)将创建Session放入Map集合中,最后返回对应的SessionId,方便后续使用。
在每个Session中单独维护了tEnv,同一个session中的操作其实是在一个env中执行的。因此只要是同一个session中的任务,内部使用的tEnv就是同一个。这样就可以实现在session中,先创建一个view,然后执行一个select,最后执行一个insert。
上一篇:用计算机进行实时自动采集动态数据 下一篇:数据驱动经验分享:从方法到实践