StreamSQL|学习笔记

简介: 快速学习 StreamSQL

开发者学堂课程【分布式入门计算StreamSQL】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/375/detail/4704


StreamSQL

内容介绍

一、StreamSQL

二、StreamSQL-DDL

三、StreamSQL-demo

一、StreamSQL

1. StreamSQL 是在阿里云官网上面开放的一款用 sql 去编写流计

算的一种产品,机构分为四成:

图片1.png

SQL (+ udf)

算子 API

Map/Reduce/Merge API

process API

最底层是 process API 的编程接口,再往上,提供了一层map/reduce/merge 的接口,在上面建造了算子的 API,跟数据库的物理执行计划十分类似,再往上支持 sql 语法,从上往下再看,通过把  sql  集齐语法术,变成逻辑执行计划,然后再根据系统原数据解析成物理执行计划,翻译到算子 API。从上往下表达能力增强,从下往上应用性增强。

2.算子原语

Map,Reduce,Shuflle,Union,Merge

算子原语之上可以实现高级算子

高级算子:Topk,distinct,Join,_windows

是对应的系统实现如下图:

图片2.png

3.基本数据类型

类型                语法

数据类型       INT, BIGINT/LONG, DOUBLE, STRING, OBJECT

TABLE类型     STREAM, RESULT, TMP, DIM

DDL           CREATE TABLE

DML           INSERT INTO

SELECT子句    SELECT FROM,WHERE,GROUP BY,DISTRIBUTE BY,UNION ALL,JOIN/LEFT,OUTER JOIN,TOP n ORDER BY ASC/DESC PARTITION BY

其他          ADD JAR,FUNCTION, UDF, UDTF, UDAF

图片3.png


二、StreamSQL-DDL

可分为四种表:源表(stream table)、结果表(result table)

、维表(dim table):用于关联( join )操作,支持全部加载内存、临时表(tmp table):连接复杂SQL。

1.源表(stream table)

定义输入数据的schema

指定数据源和参数

CREATE STREAM TABLE source_ from_ tt (

a string,

b double,

c bigint,

) WITH (

input. type=' tt',

timetunnel. logname=' aplus' ,

timetunnel. subid= 'xxx’,

);

2.结果表(result table)

定义输出数据的schema

指定数据输出系统和参数

CREATE RESULT TABLE result_ into hbase(

auction_ id        string

,ali_ fee           string

, ali_ cnt           string

,ali_ amt         string

, primary key (auction_ id)

) WITH{

output. type='/hbase',

hbase. zookeeper. quorum=‘ xxx',

zokeeper. znode. parent=' /hbase' ,

galaxy. output. hbase. family=i

);


三、StreamSQL-demo

对应SQL:

select t.a, t.b, t.c from tmpTable1 t where t.c>1

Union all

select t.a, t.b, sum(t.c) from tmpTable1 t

where t.c> 10 group by t.a,t.b;

用户通过自定义函数算子实现计算逻辑

InputStream tmp = source.read();

Stream tmp1 = tmp.filter(new CGreaterThan(1);

Stream tmp2 = tmp.filter(new CGreaterThan(10))

.keyBy(MapFns.ExtractKeys(0, 1))

.groupByKey()

.merge(ColumnUDAFs SUM DOUBLE(2))

.values();

Stream res = tmp1.union(tmp2);

整个的系统架构如图所示,主要分成四大块:

第一块 galaxy 端,是用户使用系统的接入端。第二块是resouce manager,是由飞天伏羲组件来完成,最右边是由am作摆放测件,最左边是 jobma,作为运行时控制,最底下是在物理机上运行的 worker 部分,这么一组节点可以线性扩展,

图片4.png

最后存在一个问题,几种异构任务类型之间,无法做任务之间的数据复用,就完成业务,各种计算模型,多个系统的融合,系统之间也无法共享数据,因为这些系统内部都不知道彼此的存在,为云数据大计算,现在的离线系统与在线的鸿沟依然明显。

试图从并串型  DAG,Shuffle service,Push/pull ,任务跟踪方式,是否提前拉起进程,来重新审视计算,进而去关注内存计算,怎么叫做内存计算,Batch引入所带来的问题,并行 DAG ,增量模型,离线与在线的鸿沟,离线所有的任务都走,会给整个内存的存储带来很大的问题,面向吞吐和明显延时的系统,如何互相借鉴甚至整合,都会在未来带来非常大的挑战。

相关文章
|
存储 关系型数据库 MySQL
Flink CDC 中,Checkpoints
Flink CDC 中,Checkpoints
1169 1
|
负载均衡 Ubuntu 应用服务中间件
|
C++ C语言 JavaScript
72B、1.8B、Audio模型
72B和1.8B是两个不同的模型,具体区别如下: - 72B是一个相对较大的模型,拥有72个亿个参数,而1.8B只有180亿个参数。
763 4
|
监控 数据可视化 前端开发
部署kibana分析系统并连接elasticsearch集群展现索引数据(八)
部署kibana分析系统并连接es展现索引数据 1.kibana分析系统简介 Kibana是一个开源的分析与可视化平台,设计出来用于和Elasticsearch一起使用的。你可以用kibana搜索、查看存放在Elasticsearch中的数据。Kibana与Elasticsearch的交互方式是各种不同的图表、表格、地图等,直观的展示数据,从而达到高级的数据分析与可视化的目的。
1255 0
部署kibana分析系统并连接elasticsearch集群展现索引数据(八)
|
存储 Linux KVM
Proxmox VE (PVE) 主要架构和重要服务介绍
Proxmox VE (PVE) 是一款开源的虚拟化平台,它基于 KVM (Kernel-based Virtual Machine) 和 LXC (Linux Containers) 技术,支持虚拟机和容器的运行。PVE 还提供高可用集群管理、软件定义存储、备份和恢复以及网络管理等企业级功能。
3327 7
|
4月前
|
数据安全/隐私保护 Python
微信批量导出群成员群昵称工具,导出WXID微信号信息,微信群成员导出脚本插件
使用itchat库实现微信登录和群成员信息获取支持获取群成员的昵称
|
SQL 存储 数据处理
兼顾高性能与低成本,浅析 Apache Doris 异步物化视图原理及典型场景
Apache Doris 物化视图进行了支持。**早期版本中,Doris 支持同步物化视图;从 2.1 版本开始,正式引入异步物化视图,[并在 3.0 版本中完善了这一功能](https://www.selectdb.com/blog/1058)。**
695 1
|
安全 Linux 应用服务中间件
从零开始启动、配置、保护你的云服务器并搭建一个简单的网站
本文详细介绍了如何准备原料、搭建基础环境、进行安全防护、建设网站、管理证书以及开启BBR优化网络性能。主要内容包括获取健康云服务器、配置SSH登录、创建非root用户、启用密钥认证、安装Nginx、申请TLS证书、配置HTTPS自动跳转及优化网络性能等步骤。通过本文,读者可以掌握从零开始搭建个人网站的全过程。
447 2
从零开始启动、配置、保护你的云服务器并搭建一个简单的网站
|
数据处理 Apache 流计算
【Flink】Exactly-Once的保证
【4月更文挑战第21天】【Flink】Exactly-Once的保证