前言

本文对 Flink 1.9版本特性进行了解读(基于社区邮件组讨论),同时对Blink 开源版本 flink-sql-parser 模块进行学习了解,和大家一起交流分享。

1. Flink 1.9 特性

在6.28号 Flink 1.9功能已经Freeze掉,结合之前在社区邮件组讨论的1.9新特性,以及6.29号北京 Flink Meetup视频直播解读,整体而言,Flink 1.9特性我认为分为两块,一块是社区原有计划的功能特性(不依赖Blink),另一块是合入Blink相关特性,下面给出个人相关理解。

1.1 社区原计划功能特性

Flink 1.9社区计划特性(确定要做):

  1. 重做Source Interface(FLIP-27)
  2. Savepoint connector(FLIP-43) ,允许用户从SavePoint可以操作和查询状态
  3. interactive programming(FLIP-31).交互式编程,类型在客户端可以进行sql相关操作等等
  4. Terminate / Suspend job with savepoint(FLIP-34)
  5. Flink Web UI 重做 (已经合并)
  6. 重做 Flink 机器学习模块(FLIP-39)

讨论中的功能(可能会做):

  1. active K8s 集成 Google PubSub connector
  2. 原生支持Protobuf格式
  3. Flink Table API Python 支持

1.2 合入Blink相关特性

Flink 1.9合入的 Blink 相关特性,个人觉得主要是Table/SQL方面,以及批处理方面,个人比较期待的Table/SQL方面,也感谢阿里将这部分相关功能进行了开源,下面是相关特性:

  1. Make table planners pluggable,目前Flink 1.9 有社区Planner和Blink Planner,但具体使用哪一种,开发者可以自行选择使用,Blink Planner方面会有更好的SQL方面的功能
  2. Restructure flink-table to separate API from core runtime
  3. Rework Table / SQL type system to integrate better with the SQL standard
  4. Blink作业程序调度组件(待 FLINK-10429完成后),社区作业调度器会进行重构,重构完成,Blink调度器作为一种插件引入

批处理相关:

  1. resource optimization
  2. fine-grained failover
  3. pluggable shuffle service[FLIP-31]
  4. adapting stream operators for batch execution,
  5. Unified Catalog API & Hive metastore integration(FLIP-30)。Hive兼容。

1.3 Flink Meetup相关讲解

未来架构:

未来Flink 的架构方向,会逐渐废除掉DataSet API,只保留DataStreamAPI. 从用户的角度来看,其需要从两种API里面来进行选择,同时由于不同的语义,不同的Connector等,使用起来,会感觉到困惑。从开发者角度来看,有两套不同的API,相当于你要对着两套不同的API都进行维护,同时添加新功能时,可能两套都要开发,而且这两套代码之间也难以复用。

全新的SQL类型系统:

兼容Hive:

更丰富的Blink 相关功能:

Blink Runner相关功能,会在后续1.9+版本陆续开始合入,大家可以关注社区的FLIP的方向,时刻关注的社区。

2. Blink Table/SQL 功能借鉴

2.1 Blink 支持的SQL语法

2.1.1 Create Function

Create function语法支持:

create function say_hello as 'com.lakeshen.bigdata.SayHello';

Blink分支源码类对应为: SqlCreateFunction,前面是函数的名称,后面是函数的Class路径

2.1.2 Create Table

Create table 总体分为三种,创建Source表(数据输入源)和创建Sink表(数据输出源),维表(关联表)。目前Blink只提供了语法解析,但具体实现需要实时平台方自己实现。Source表和Sink两种表创建语法一样,只是在使用时不同,维表的创建有点不同。Source 表一般出现在select from语法中,一般和view结合使用。而Sink表是结合insert语句来进行使用,维表的话,主要在Join语句中进行使用,主要用来关联数据。

具体语法如下:
创建 Source表语法:

create table kafka_src(a varchar,b varchar,c bigint,d varchar,primary key (a)
)
with(
type = 'kafka'
.....
);

创建Sink表语法:

-- 创建Source表语法
create table kafka_src(a varchar,b varchar,c bigint,d varchar
)
with(
type = 'kafka'
.....
);
-- insert语句
insert into kafka_src select * from kafka_src_b;

用户开发在with后面写相关的参数,根据这些参数,可以创建出不同的connector进行连接。

2.1.3 Create View

create view表示数据的加工逻辑,具体逻辑需要开发同学自己编写,当然也可以多个view一起使用,具体create view 语法如下:

create view get_max_a_b as select max(a) as max_a,max(b) as max_b from kafka_src;create view get_a_greater_b as select max_a,max_b from get_max_a;

2.2 自定义SQL化实时任务

下面是自己定义了一个SQL化实时任务,

-- 创建源表
create table order_src(
messageKey VARBINARY,`message`    VARBINARY,topic      VARCHAR,`partition`  INT,`offset`     BIGINT
)
with(type = 'kafka10',topic = 'test',groupid = 'helloworlds',bootstrap.servers='xxxxx:9092'
);
--创建sink表
create table order_sink(messagekey VARBINARY,message  VARBINARY
)
with(type = 'kafka10',topic = 'lakeshen_test',groupid = 'helloworlds1',bootstrap.servers='xxxxxx:9092'
);
--创建一个视图,用户将二进制数组转换成String
CREATE VIEW getstr
AS  SELECT messagekey,bytestostr(message) as d
FROM  order_src ;
-- 插入到结果表中,当d的值为lakeshenlakeshen
insert into  order_sink
select messagekey,d from getstr where d = 'lakeshenlakeshen';

上面程序主要包含了三部分:create table 语法用来创建Source流和Sink,create view语法用来创建相关的数据加工逻辑,最后insert into输出到结果表。
上面代码是可以使用Blink 来进行SQL解析,同时会生成不同的SqlNode,感兴趣的同学可以自己去尝试调试一下。

3. 结语

Flink 1.9版本可以说是自己非常期待的版本,其在Table/SQL方面公开了很多特性,比如维表Join,DDL 语法的支持。同时正如 Flink Meetup 中杨老师说是,从Flink 1.9版本开始,会加强其在批处理方面的能力,所以你可以在Flink 1.9版本中看到很多关于方面的特性,比如资源优化等,Flink 未来方向是希望将批流计算进行统一,希望Flink 社区越来越好

下面是个人微信公众号:LakeShen,专注于大数据、Flink 实时计算、程序员技术成长和经验分享,欢迎大家关注,一起学习交流。

回复 ‘’Flink‘’获取我个人整理的 Flink 学习书籍、论文、以及Flink 学习博客推荐。Flink学习,我与你一起前行。

Flink 1.9 特性学习和Blink SQL Parser 功能使用相关推荐

  1. TiDB 源码阅读系列文章(五)TiDB SQL Parser 的实现

    本文为 TiDB 源码阅读系列文章的第五篇,主要对 SQL Parser 功能的实现进行了讲解,内容来自社区小伙伴--马震(GitHub ID:mz1999 )的投稿. TiDB 源码阅读系列文章的撰 ...

  2. Flink学习4-流式SQL

    Flink学习4-流式SQL Flink系列文章 更多Flink系列文章请点击Flink系列文章 更多大数据文章请点击大数据好文推荐 摘要 介绍Flink Table Sql API相关概念,还会提供 ...

  3. 实时计算 Flink SQL 核心功能解密

    2019独角兽企业重金招聘Python工程师标准>>> 实时计算 Flink SQL 核心功能解密 Flink SQL 是于2017年7月开始面向集团开放流计算服务的.虽然是一个非常 ...

  4. 腾讯基于 Flink SQL 的功能扩展与深度优化实践

    简介:本文由腾讯高级工程师杜立分享,主要介绍腾讯实时计算平台针对 Flink SQL 所做的优化. 整理:戴季国(Flink 社区志愿者) 校对:苗文婷(Flink 社区志愿者) 摘要:本文由腾讯高级 ...

  5. 使用Blink SQL+UDAF实现差值聚合计算

    本案例根据某电网公司的真实业务需求,通过Blink SQL+UDAF实现实时流上的差值聚合计算,通过本案例,让读者熟悉UDAF编写,并理解UDAF中的方法调用关系和顺序. 感谢@军长在实现过程中的指导 ...

  6. 揭秘 Flink 1.9 新架构,Blink Planner 你会用了吗?

    本文为 Apache Flink 新版本重大功能特性解读之 Flink SQL 系列文章的开篇,Flink SQL 系列文章由其核心贡献者们分享,涵盖基础知识.实践.调优.内部实现等各个方面,带你由浅 ...

  7. 最方便的在线Oracle SQL学习环境--Live SQL

    在线Oracle SQL学习环境--Live SQL 概述 一键开始 登录和注册 开始编写SQL之旅 Live SQL的各选项 1. SQL Worksheet 2. My Session 3. Qu ...

  8. Blink SQL介绍

    阿里团队在flink 的基础上开发了blink,从而支持flink(blink)全SQL开发流式程序 发展历程 在 Flink 1.9 中,Table 模块迎来了核心架构的升级,引入了阿里巴巴Blin ...

  9. jdk7新特性学习笔记

    jdk7新特性学习笔记 从网络down了视频看,记录下学过的东西. 1.二进制字面量 JDK7开始,可以用二进制来表示整数(byte,short,int和long),语法:在二进制数值前面加 0b或者 ...

最新文章

  1. Gamma阶段第一次scrum meeting
  2. 如何用matlab消除谐波,如何在含有整次谐波和非整次谐波的信号中去除整次谐波?...
  3. 循环录(输)入 java 课的学生成绩(5个学生),统计分数大于等于 80 分的学生
  4. mybatis学习(15):mybatis连接mysql数据库
  5. Node.js webpack webpack-dev-server
  6. 在datasnap 中使用unidac 访问数据(客户端)
  7. 设计模式学习笔记之四:抽象工厂模式
  8. 共享服务器协议,3.5.7 文件共享服务及SMB协议
  9. U-Net - Convolutional Networks for Biomedical Image Segmentation论文翻译——中英文对照
  10. 即时通讯-Netty篇
  11. win10开机无法自动修复此计算机,win10无限自动修复无法开机怎么办_win10开机自动修复失败如何解决...
  12. 使用canvas画三角形,圆形,半圆,八卦
  13. 转录组助力HIV-1病毒感染机制研究新成果
  14. 智慧班级管理系统 java
  15. 微信输入法 你有了吗?张小龙:防窃听、护隐私
  16. rqt teb参数动态调试工具_teb教程8
  17. python中repeat_Python Pandas Series.repeat()用法及代码示例
  18. Excel中函数row和column的特殊应用
  19. 计算机编程中的aa是什么意思,output是什么意思 output的例句 编程中output表示输出参数...
  20. 软件开发中 前台、中台、后台英文_企业架构 | 中台是什么?

热门文章

  1. 用好.net SDK
  2. 《The C++ IO Streams and Locales》英文版
  3. 沧田 DT812K 打印机驱动
  4. Server2019配置iscsi
  5. 霍洛维茨极品创业鸡汤 让创业者走出绝望
  6. 根据地球上任意两点的经纬度计算两点间的距离
  7. Microsoft HPC Pack 2016部署Comsol Multiphysics多物理场耦合并行计算以及超大规模仿真计算集群硬件配置推荐
  8. 湖北省小学生计算机大赛,市教育局关于组织参加省2019年度中小学电脑制作活动的通知...
  9. MoE 系列(一)|如何使用 Golang 扩展 Envoy
  10. Halcon几何定位