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 ,增量模型,离线与在线的鸿沟,离线所有的任务都走,会给整个内存的存储带来很大的问题,面向吞吐和明显延时的系统,如何互相借鉴甚至整合,都会在未来带来非常大的挑战。

相关实践学习
云数据库HBase版使用教程
  相关的阿里云产品:云数据库 HBase 版 面向大数据领域的一站式NoSQL服务,100%兼容开源HBase并深度扩展,支持海量数据下的实时存储、高并发吞吐、轻SQL分析、全文检索、时序时空查询等能力,是风控、推荐、广告、物联网、车联网、Feeds流、数据大屏等场景首选数据库,是为淘宝、支付宝、菜鸟等众多阿里核心业务提供关键支撑的数据库。 了解产品详情: https://cn.aliyun.com/product/hbase   ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
存储 消息中间件 弹性计算
尘央大佬带你学| 学习笔记
快速学习尘央大佬带你学。
134 0
尘央大佬带你学| 学习笔记
|
算法 计算机视觉
OpenCV学习笔记--SIFT,SUFT
图像处理两大特征提取算法
112 0
|
开发者
整合的实现 | 学习笔记
快速学习整合的实现.
整合的实现 | 学习笔记
|
Java 开发者
Loger 的使用|学习笔记
快速学习 Loger 的使用
346 0
Loger 的使用|学习笔记
|
Scala 开发者
ListBuffer 的使用 | 学习笔记
快速学习 ListBuffer 的使用
168 0
ListBuffer 的使用 | 学习笔记
|
移动开发 JavaScript HTML5
NgForm学习笔记
NgForm学习笔记
123 0
NgForm学习笔记
|
开发者 索引
MatchAllQuery|学习笔记
快速学习 MatchAllQuery。
85 0
|
负载均衡 开发者 索引
replicas|学习笔记
快速学习 replicas。
103 0
|
分布式计算 Hadoop Apache
regexpQuery | 学习笔记
快速学习 regexpQuery
156 0
|
存储 Java 开发者
BinaryTree|学习笔记
快速学习BinaryTree
BinaryTree|学习笔记