当前位置:文档之家› 阿里大数据计算服务MaxCompute-流式计算

阿里大数据计算服务MaxCompute-流式计算

给ODPS账号授权
Grant all on table <table_name> to user odps@
在流式计算过程中,Stream SQL需要访问DataHub服务中得表数据。因此,需要用户显示授权该 ODPS账号以读权限。在后续的改进中,我们将取消此次授权操作。用户可以直接通过Stream SQL访问DataHub表数据,并满足安全需求。 创建一个流计算的任务,该任务引用stream_in表作为数据源,并且将结果写入stream_out表中。
大数据计算服务MaxCompute 流式计算
大数据计算服务MaxCompute/流式计算
流式计算
简介
Stream SQL是 MaxCompute 提供的一种完全托管的分布式数据流式处理服务。该功能底层采用先进的分布式 增量计算框架,可以实现低延迟响应,以SQL的形式提供流式计算服务,并且完全屏蔽了流式计算中复杂的故 障恢复等技术细节,极大的提高了开发效率。
1
大数据计算服务MaxCompute/流式计算
流式计算的结果可以直接写入HubTable,通过外部的订阅服务更新到目标库中。实现一个简单的流计算的步骤 如下:
创建一张数据上传的目标表, 并且指定该表可以实时上传数据。
CREATE TABLE stream_in (...); -- 指定该表可以允许实时数据上传 ALTER TABLE stream_in SET HUBLIFECYCLE 2; -- 创建另一张流式计算的输出结果表 CREATE TABLE stream_out (...); ALTER TABLE stream_out SET HUBLIFECYCLE 2;
备注:目前Stream SQL已处于维护状态,不再接入新用户。后续Stream SQL会成为一款阿里云的独立产 品,相关信息请关注阿里云官方通告。
功能特点
- 低延时: 从数据写入到计算出结果秒级别的延迟; - 高可靠: 底层的体系架构充分考虑了单节点失效后的故障恢复等问题,可以保证数据在处理过程中的不
select * from stream_out;
会发现有一系列逐渐累积增长的汇总数据。
基本概念
2
大数据计算服务MaxCompute/流式计算
在 MaxCompute 中流计算的逻辑是通过SQL定义的,称为StreamJob。streamJob通过SQL引用的 HubTable读取实时数据,并且将结果写入结果表中。此外,还可以维表和临时表。详细说明如下:
CREATE STREAMJOB testjob AS INSERT INTO table stream_out SELECT COUNT(*) FROM stream_in; END STREAMJOB;
在ODPS客户端窗口中执上面的流计算任务,系统会建立一个流计算的任务,一旦用户通过 stream_in表实时的上传数据,就会触发流计算的过程,并且将结果增量的写入到stream_out中。 调用DataHub SDK将数据上传到stream_in表中。 随着数据的上传,在ODPS客户端窗口中执行若干次。
临时表
如果计算的逻辑比较复杂,用一个SQL难以描述,可以通过定义临时表的方式来简化开发的过程。临时表的定 义只在该streamJob中有效。
结果表
流计算的结果可以写入HubTable中。
作业运行
StreamJob对象在创建后会长期运行,直到用户将该任务停止。用户可以通过命令将流计算作业暂停、恢复或 者彻底的删除。
StreamJob操作
创建StreamJob
通过客户端创建一个StreamJob的命令格式如下,在StreamJob中包括维表、临时表、结果表的声明,以及通 过Stream SQL定义的计算逻辑,其中维表、临时表及结果表的声明都是可选项。
CREATE STREAMJOB jobname AS [声明维表] [声明临时表] [声明结果表] -- 通过Stream SQL定义计算逻辑 END STREAMJOB;
Stream SQL的源头数据来自于DataHub Service提供的实时上传服务,用户可以创建一张表作为实时上传的目 标表(称为HubTable),数据在上传后会在短时间内复制到到离线集群中,并且还可以提供类似消息队列的发布 /订阅服务(Pub/Sub),数据是以一个个小的批量模式上传,延时很小。Stream SQL就通过订阅数据的方式进 行增量的计算。关于HubTable的说明,请参考DataHub。
源表
Stream Job中引用的源表是HubTable,用户必须将数据通过Data Hub Service实时上传到ODPS中。
维表
维表中的内容在运行时会由系统加载到内部缓冲区,并且可以和流式数据进行Join运算。维表的定义只在该 StreamJob中有效。用户利用维表可以从离线的表中加载数据。维表中的内容只被引用,不能在StreamJob中 更改。在一个StreamJob中定义的维表数据不超过5个,内存不超过3G。
重不丢。 - 可扩展: 在数据量增加时,用户可以通过简单的增加Worker节点数量的方式进行水平扩展,可以支持
每天PB级别的数据流量。 - 开发方便: 使用标准的SQL描述流式计算的过程,隐藏了底层的复杂技术架构,极大的提升了开发效率

典型ห้องสมุดไป่ตู้用
流式数据通常会采集到消息队列中,再由流式计算的引擎从消息队列中订阅数据。在 MaxCompute 中将这种 模式进行了简化,可以将表作为流式数据载体,这种表在 MaxCompute 中被称为HubTable,用户实时上传到 HubTable中的数据可以被流式计算引擎订阅使用,并且同时会被写到离线集群中供离线计算引擎使用。用户同 样可以开发应用从HubTable中订阅数据。因此在Stream SQL中,HubTable首先是流计算引擎的数据源,同 时也可以作为流式计算的输出。更多有关HubTable的介绍请参考 Data Hub Service
3
大数据计算服务MaxCompute/流式计算
说明: 1. 在创建StreamJob之前可以通过set命令指定运行时的可选参数:
相关主题