• 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保证数据的持久性。

  • 相关阅读:
    vue - Vue脚手架(终结篇)/ vue动画
    【Numpy总结】第一节:Numpy 对象与类型
    NCMMSC 2021丨长短视频多语种多模态识别挑战赛
    一个恢复CSI挂载信息的解决方法
    一起Talk Android吧(第四百一十四回:使用三角函数绘制正弦波的优化)
    Java8 新特性之Stream(二)-- Stream的中间操作
    pandas 读取三种常见格式(txt、excel、csv)
    基于JAVA科技专业师生沟通平台计算机毕业设计源码+系统+mysql数据库+lw文档+部署
    ASEMI肖特基二极管SB30100LCT图片,SB30100LCT应用
    色彩的基础知识——适用于camera tuning
  • 原文地址:https://blog.csdn.net/hsabrina/article/details/126013283