MaxCompute 基本概念与术语

本文涉及的产品
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
云原生大数据计算服务 MaxCompute,5000CU*H 100GB 3个月
简介: MaxCompute 基本概念与术语

项目空间
• 项目空间(Project)是MaxCompute的基本组织单元,类似于传统数据库的DataBase或Schema的概念,是进行多用户隔离和访问控制的主要边界。项目空间中包含多个对象,例如表(Table)、资源(Resource)、函数(Function)和实例(Instance)等。
• 一个用户可以同时拥有多个项目空间的权限。通过安全授权,可以跨项目空间访问对象。
• 通过在MaxCompute客户端中运行use
project命令进入一个项目空间。


• 表是MaxCompute的数据存储单元,逻辑上是二维结构,MaxCompute中不同类型计算任务的操作对象(输入、输出)都是表。
• MaxCompute的表分为内部表和外部表(2.0版本开始支持)。
• 对于内部表,所有的数据都被存储在MaxCompute中。
• 对于外部表,MaxCompute并不真正持有数据,表格的数据可以存放在OSS或OTS中,MaxCompute仅会记录表格的Meta信息,OSS上的信息可以是非结构化的,例如视频、音频等。
• MaxCompute与Oracle等数据库不同,系统并不会自动创建dual表。

分区
• 分区表是指在创建表时指定分区空间,即指定表内的一个或某几个字段作为分区列。分区表实际就是对应分布式文件系统上的独立文件夹,该文件夹下是该分区的所有数据文件。
• 分区表的意义在于优化查询。查询表时通过where子句查询指定分区,避免全表扫描。
• MaxCompute将分区列的每个值作为一个分区,同时也可以指定多级分区,即将表的多个字段作为表的分区,如多级目录的关系。
• MaxCompute
2.0支持字段类型为TINYINT、SMALLINT、INT、BIGINT、VARCHAR、STRING的分区,虽然可以指定分区类型为BIGINT,但是除了表的字段表示为BIGINT,任何其他情况实际都被处理为STRING。建议使用STRING。

分区使用限制
• 单表分区层级最多为6级。
• 单表分区数最多允许60000个分区。
• 单词查询允许查询的最多分区个数为10000个。
• STRING分区类型的分区值不支持使用中文。
错误的分区使用方式:
select * from src where pt=20170601;
在这样的使用方式下,MaxCompute并不能保障分区过滤机制的有效性。pt是STRING类型,当STRING类型与BIGINT(20170601)比较时,MaxCompute会将二者转换为DOUBLE类型,此时有可能会有精度损失。

生命周期
MaxCompute表的生命周期(Lifecycle),指表(分区)数据从最后一次更新的时间算起,在经过指定的时间后没有变动,则此表(分区)将被MaxCompute自动回收,这个指定的时间就是生命周期。
• 生命周期单位:Days(天),只接受正整数。
• 对于非分区表,如果表数据在生命周期内没有被修改,生命周期结束时,此表将会被MaxCompute自动回收(类似drop table),生命周期从最后一次表数据被修改的时间(LastDataModifiedTime)起进行计算。
• 对于分区表,每个分区可以分别被回收,在生命周期内数据未被修改的分区,经过指定的天数后,此分区将会被回收,否则会被保留。同理,生命周期是从最后一次分区数据被修改的时间起进行计算。不同于非分区表的是,分区表的最后一个分区被回收后,该表不会被删除。
• 生命周期回收为每天定时启动,扫描所有分区,只有被扫描时发现分区/表超过生命周期的指定时间,分区/表才会被回收。
• 生命周期只能设定到表级别,不能设定到分区级,创建表时即可指定生命周期。

资源
资源(Resource)是MaxCompute的特有概念,如果需要使用UDF、MapReduce,读取第三方库等,都需要依赖资源来完成,如下所示:
• SQL UDF:编写UDF时,需要将编译好的jar包或编写好的Python UDF脚本文件以资源的形式上传到MaxCompute,运行UDF时,MaxCompute会自动下载jar包或python脚本来运行UDF。
• MapReduce:编写MapReduce程序后,将编译好的jar包上传到MaxCompute,运行MapReduce作业时,MapReduce框架会自动下载这个资源从而获取代码。
• MaxCompute支持上传的单个资源大小上限为500MB,资源包括File类型、Table类型、Jar类型和Archive类型。

函数
MaxCompute提供了内建函数与自定义函数,自定义函数分为标量值函数(UDF)、自定义聚合函数(UDAF)和自定义表值函数(UDTF)。
• UDF
广义的UDF代表自定义标量函数、自定义聚合函数及自定义表函数三种类型的自定义函数的集合。狭义的UDF指用户自定义标量值函数,即读入一行数据,写出一条输出。
• UDAF
自定义聚合函数,即多条输入记录聚合成一条输出值,可以与SQL中的GROUP BY语句联用。
• UDTF
自定义表值函数,输入多个字段,返回多个字段,逐行记录进行处理。简单的说,UDF是特殊的UDTF。

任务
任务(Task)是MaxCompute的基本计算单元,对于计算型任务,例如SQL、MapReduce,MaxCompute会对其进行解析,得出任务的执行计划,执行计划由具有依赖关系的多个执行阶段(Stage)构成。
• 执行计划逻辑上可以被看做一个有向无环图,图中的点是执行阶段,各个执行阶段的依赖关系是图的边。MaxCompute会依照图(执行计划)中的依赖关系执行各个阶段。在同一个执行阶段内,会有多个进程,也称之为Worker,共同完成该执行阶段的计算工作。同一个执行阶段的不同Worker只是处理的数据不同,执行逻辑完全相同。计算型任务在执行时,会被实例化。
• 另一方面,部分MaxCompute任务并不是计算型的任务,例如SQL中的DDL语句,这些任务本质上仅需要读取、修改MaxCompute中的元数据信息,因此这些任务无法被解析出执行计划。

任务实例
在MaxCompute中,部分任务在执行时会被实例化,任务实例会经历运行(Running)和结束(Terminated)两个阶段。运行阶段的状态为Running,而结束阶段会有Success、Failed、Canceled三种状态。
ACID语义

相关术语
• 操作:指在MaxCompute上提交的单个作业。
• 数据对象:指持有实际数据的对象,例如非分区表、分区。
• INTO类作业:INSERT INTO、DYNAMIC INSERT INTO等。
• OVERWRITE类作业:INSERT OVERWRITE、DYNAMIC INSERT OVERWRITE等。
• Tunnel数据上传:可以归结为INTO类或OVERWRITE类作业。
ACID语义描述
• 原子性(Atomicity):一个操作或是全部完成,或是全部不完成,不会结束在中间某个环节。
• 一致性(Consistency):从操作开始至结束的期间,数据对象的完整性没有被破坏。
• 隔离性(Isolation):操作独立于其它并发操作完成。
• 持久性(Durabillity):操作处理结束后,对数据的修改将永久有效,即使出现系统故障,该修改也不会丢失。
MaxCompute的ACID具体情形
• 原子性(Atomicity)
• 任何时候MaxCompute会保证在冲突时只会有一个作业成功,其它冲突作业失败。
• 对于单个表/分区的CREATE/OVERWRITE/DROP操作,可以保证其原子性。
• 跨表操作时不支持原子性(例如MULTI-INSERT)。
• 在极端情况下,以下操作可能不保证原子性:
• DYNAMIC INSERT OVERWRITE多于一万个分区,不支持原子性。
• INTO类操作:事务回滚时会有数据清理失败。
• 一致性(Consistency)
• OVERWRITE类作业可保证一致性。
• INTO类作业在冲突失败后可能存在失败作业的数据残留。
• 隔离性(Isolation)
• 非INTO类操作保证读已提交。
• INTO类操作存在读未提交的场景。
• 持久性(Durability)
• MaxCompute保证数据的持久性。

术语查询列表:https://help.aliyun.com/document_detail/27801.html

相关实践学习
基于MaxCompute的热门话题分析
本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps 
目录
相关文章
|
2月前
|
存储 分布式计算 大数据
大数据-169 Elasticsearch 索引使用 与 架构概念 增删改查
大数据-169 Elasticsearch 索引使用 与 架构概念 增删改查
71 3
|
2月前
|
消息中间件 分布式计算 大数据
大数据-123 - Flink 并行度 相关概念 全局、作业、算子、Slot并行度 Flink并行度设置与测试
大数据-123 - Flink 并行度 相关概念 全局、作业、算子、Slot并行度 Flink并行度设置与测试
163 0
|
2月前
|
数据采集 数据可视化 大数据
大数据体系知识学习(三):数据清洗_箱线图的概念以及代码实现
这篇文章介绍了如何使用Python中的matplotlib和numpy库来创建箱线图,以检测和处理数据集中的异常值。
66 1
大数据体系知识学习(三):数据清洗_箱线图的概念以及代码实现
|
2月前
|
存储 缓存 NoSQL
大数据-45 Redis 持久化概念 RDB AOF机制 持久化原因和对比
大数据-45 Redis 持久化概念 RDB AOF机制 持久化原因和对比
54 2
大数据-45 Redis 持久化概念 RDB AOF机制 持久化原因和对比
|
2月前
|
机器学习/深度学习 XML 分布式计算
大数据的概念
【10月更文挑战第16天】
128 4
|
2月前
|
消息中间件 存储 分布式计算
大数据-72 Kafka 高级特性 稳定性-事务 (概念多枯燥) 定义、概览、组、协调器、流程、中止、失败
大数据-72 Kafka 高级特性 稳定性-事务 (概念多枯燥) 定义、概览、组、协调器、流程、中止、失败
43 4
|
2月前
|
消息中间件 NoSQL Kafka
大数据-52 Kafka 基础概念和基本架构 核心API介绍 应用场景等
大数据-52 Kafka 基础概念和基本架构 核心API介绍 应用场景等
78 5
|
2月前
|
消息中间件 存储 分布式计算
大数据-53 Kafka 基本架构核心概念 Producer Consumer Broker Topic Partition Offset 基础概念了解
大数据-53 Kafka 基本架构核心概念 Producer Consumer Broker Topic Partition Offset 基础概念了解
86 4
|
2月前
|
存储 缓存 NoSQL
大数据-38 Redis 高并发下的分布式缓存 Redis简介 缓存场景 读写模式 旁路模式 穿透模式 缓存模式 基本概念等
大数据-38 Redis 高并发下的分布式缓存 Redis简介 缓存场景 读写模式 旁路模式 穿透模式 缓存模式 基本概念等
75 4
|
2月前
|
消息中间件 大数据 Kafka
大数据-77 Kafka 高级特性-稳定性-延时队列、重试队列 概念学习 JavaAPI实现(二)
大数据-77 Kafka 高级特性-稳定性-延时队列、重试队列 概念学习 JavaAPI实现(二)
39 2