MaxComwwwzs12558comI3578II9877-pute 基本概念与术语
项目空间
• 项目空间(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保证数据的持久性。
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
HBase2.0官方文档翻译-RegionServer Sizing Rules of Thumb
36. On the number of column families HBase currently does not do well with anything above two or three column families so keep the number of column families in your schema low. Currently, flushing and compactions are done on a per Region basis so if one column family is carrying the bulk of the data bringing on flushes, the adjacent families will also be flushed even though the amount of data they carry is small. When many column families exist the flushing and compaction interaction can make fo...
- 下一篇
SpringBoot 使用JestClient操作Elasticsearch
1.Jest介绍 操作Elasticsearch的客户端有很多,SpringBoot也提供了方式去操作,这里介绍另外一种方式去使用Elasticsearch --- JestClient JestClient是一款基于HTTP方式操作的Elasticsearch的客户端,支持同步和异步操作,同时也可以结合ElasticSearch的依赖进行操作Elasticsearch。 支持多个版本的Elasticsearch,如下: = 6.0.0 | 6= 5.0.0 | 5= 2.0.0 | 20.1.0 - 1.0.0 | 1 <= 0.0.6 | < 1 更多信息可以查看github,地址是:https://github.com/searchbox-io/Jest 2.SpringBoot整合JestClient 接下来介绍如何在SpringBoot中使用JestClient操作Elasticsearch。 2.1 前置工作 首先启动Elasticsearch,我这里是在本地启动的Elasticsearch,版本是6.8.2,为了方便查看数据,这里使用Elasticsearch...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Eclipse初始化配置,告别卡顿、闪退、编译时间过长
- Red5直播服务器,属于Java语言的直播服务器
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- Docker安装Oracle12C,快速搭建Oracle学习环境
- CentOS6,CentOS7官方镜像安装Oracle11G
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- CentOS关闭SELinux安全模块
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16