MaxComputer的術(shù)語(yǔ)表
A
AccessKey
AccessKey(簡(jiǎn)稱AK,包括AccessKey ID和AccessKey Secret),是訪問(wèn)阿里云API的密鑰。在阿里云官網(wǎng)注冊(cè)云賬號(hào)后,可在AccessKey管理頁(yè)面生成,用于標(biāo)識(shí)用戶,為訪問(wèn)MaxCompute或者其他云產(chǎn)品做簽名驗(yàn)證。AccessKey Secret必須保密。
安全
MaxCompute多租戶數(shù)據(jù)安全體系,主要包括用戶認(rèn)證、項(xiàng)目空間的用戶與授權(quán)管理、跨項(xiàng)目空間的資源分享以及項(xiàng)目空間的數(shù)據(jù)保護(hù)。關(guān)于MaxCompute安全操作的更多詳情請(qǐng)參見安全指南。
C
Console
MaxCompute Console是運(yùn)行在Window/Linux下的客戶端工具,通過(guò)Console可以提交命令完成項(xiàng)目空間管理、DDL、DML等操作。對(duì)應(yīng)的工具安裝和常用參數(shù)請(qǐng)參見客戶端。
D
Data Type
MaxCompute表中所有列對(duì)應(yīng)的數(shù)據(jù)類型。目前支持的數(shù)據(jù)類型詳情請(qǐng)參見數(shù)據(jù)類型。
DDL
數(shù)據(jù)定義語(yǔ)言(Data Definition Language)。例如創(chuàng)建表、創(chuàng)建視圖等操作,詳情請(qǐng)參見DDL語(yǔ)句。
DML
數(shù)據(jù)操作語(yǔ)言(Data Manipulation Language)。例如INSERT操作,MaxCompute DML語(yǔ)法請(qǐng)參見INSERT語(yǔ)句。
F
fuxi
伏羲(fuxi)是飛天平臺(tái)內(nèi)核中負(fù)責(zé)資源管理和任務(wù)調(diào)度的模塊,同時(shí)也為應(yīng)用開發(fā)提供了一套編程基礎(chǔ)框架。MaxCompute底層任務(wù)調(diào)度模塊為fuxi的調(diào)度模塊。
I
Instance(實(shí)例)
作業(yè)的一個(gè)具體實(shí)例,表示實(shí)際運(yùn)行的Job,類同Hadoop中Job的概念。詳情請(qǐng)參見任務(wù)實(shí)例。
M
MapReduce
MapReduce是處理數(shù)據(jù)的一種編程模型,通常用于大規(guī)模數(shù)據(jù)集的并行運(yùn)算。您可以使用MapReduce提供的接口(Java API)編寫MapReduce程序,來(lái)處理MaxCompute中的數(shù)據(jù)。編程思想是將數(shù)據(jù)的處理方式分為Map(映射)和Reduce(規(guī)約)。
在正式執(zhí)行Map前,需要將輸入的數(shù)據(jù)進(jìn)行分片。所謂分片,就是將輸入數(shù)據(jù)切分為大小相等的數(shù)據(jù)塊,每一塊作為單個(gè)Map Worker的輸入被處理,以便于多個(gè)Map Worker同時(shí)工作。每個(gè)Map Worker在讀入各自的數(shù)據(jù)后,進(jìn)行計(jì)算處理,最終通過(guò)Reduce函數(shù)整合中間結(jié)果,從而得到最終計(jì)算結(jié)果。詳情請(qǐng)參見MapReduce。
O
ODPS
ODPS是MaxCompute的原名。
P
Partition(分區(qū))
分區(qū)Partition是指一張表下,根據(jù)分區(qū)字段(一個(gè)或多個(gè)字段的組合)對(duì)數(shù)據(jù)存儲(chǔ)進(jìn)行劃分。也就是說(shuō),如果表沒(méi)有分區(qū),數(shù)據(jù)是直接放在表所在的目錄下。如果表有分區(qū),每個(gè)分區(qū)對(duì)應(yīng)表下的一個(gè)目錄,數(shù)據(jù)是分別存儲(chǔ)在不同的分區(qū)目錄下。關(guān)于分區(qū)的更多介紹請(qǐng)參見分區(qū)。
Project(項(xiàng)目/項(xiàng)目空間)
項(xiàng)目空間(Project)是MaxCompute的基本組織單元,它類似于傳統(tǒng)數(shù)據(jù)庫(kù)的Database或Schema的概念,是進(jìn)行多用戶隔離和訪問(wèn)控制的主要邊界。詳情請(qǐng)參見項(xiàng)目空間。
R
Role(角色)
角色是MaxCompute安全功能里使用的概念,可以看成是擁有相同權(quán)限的用戶的集合。多個(gè)用戶可以同時(shí)存在于一個(gè)角色下,一個(gè)用戶也可以隸屬于多個(gè)角色。給角色授權(quán)后,該角色下的所有用戶擁有相同的權(quán)限。關(guān)于角色管理的更多介紹請(qǐng)參見角色管理。
Resource(資源)
資源(Resource)是MaxCompute中特有的概念。如果您想使用MaxCompute的自定義函數(shù)(UDF)或MapReduce功能,則需要依賴資源來(lái)完成。詳情請(qǐng)參見資源。
S
SDK
Software Development Kit軟件開發(fā)工具包。一般都是一些被軟件工程師用于為特定的軟件包、軟件實(shí)例、軟件框架、硬件平臺(tái)、操作系統(tǒng)、文檔包等建立應(yīng)用軟件的開發(fā)工具的集合。MaxCompute目前支持Java SDK介紹和Python SDK。
授權(quán)
項(xiàng)目空間管理員或者Project Owner授予您對(duì)MaxCompute中的Object(或稱之為對(duì)象,例如表、任務(wù)、資源等)進(jìn)行某種操作的權(quán)限,包括讀、寫、查看等。授權(quán)的具體操作請(qǐng)參見用戶管理。
沙箱(Sandboxie)
沙箱是一種按照安全策略限制程序行為的執(zhí)行環(huán)境。沙箱機(jī)制是一種安全機(jī)制,將Java代碼限定在特定的運(yùn)行范圍中,并且嚴(yán)格限制代碼對(duì)本地系統(tǒng)資源訪問(wèn),通過(guò)這樣的措施來(lái)保證對(duì)代碼的有效隔離,防止對(duì)本地系統(tǒng)造成破壞。MaxCompute MapReduce及UDF程序在分布式環(huán)境中運(yùn)行時(shí)受到Java沙箱的限制。
T
Table(表)
表是MaxCompute的數(shù)據(jù)存儲(chǔ)單元,詳情請(qǐng)參見表。
Tunnel
MaxCompute的數(shù)據(jù)通道,提供高并發(fā)的離線數(shù)據(jù)上傳下載服務(wù)。您可以使用Tunnel服務(wù)向MaxCompute批量上傳數(shù)據(jù)或者向本地進(jìn)行批量數(shù)據(jù)下載。相關(guān)命令請(qǐng)參見Tunnel命令參考或批量數(shù)據(jù)通道SDK。
U
UDF
廣義的UDF(User Defined Function),代表了自定義標(biāo)量函數(shù)、自定義聚合函數(shù)及自定義表函數(shù)三種類型的自定義函數(shù)的集合。MaxCompute提供的Java編程接口開發(fā)自定義函數(shù),詳情請(qǐng)參見UDF概述。
狹義的UDF指用戶自定義標(biāo)量值函數(shù)(User Defined Scalar Function),它的輸入與輸出是一對(duì)一的關(guān)系,即讀入一行數(shù)據(jù),寫出一條輸出值。
UDAF
自定義聚合函數(shù)(User Defined Aggregation Function),它的輸入與輸出是多對(duì)一的關(guān)系, 即將多條輸入記錄聚合成一條輸出值??梢耘cSQL中的GROUP BY語(yǔ)句聯(lián)用。詳情請(qǐng)參見UDAF。
UDTF
自定義表值函數(shù)(User Defined Table Valued Function),用來(lái)解決一次函數(shù)調(diào)用輸出多行數(shù)據(jù)的場(chǎng)景。它是唯一能返回多個(gè)字段的自定義函數(shù),而UDF只能一次計(jì)算輸出一條返回值。詳情請(qǐng)參見UDTF。
常用命令列表
列舉MaxCompute客戶端的常用命令。
最新的MaxCompute服務(wù)對(duì)常用命令做了調(diào)整,新的命令風(fēng)格更貼近于Hive的使用方式,方便原有的Hadoop和Hive用戶。
MaxCompute提供了對(duì)項(xiàng)目空間、表、資源及實(shí)例等對(duì)象的一系列操作。您可以通過(guò)客戶端命令或SDK來(lái)操作這些對(duì)象。
常用命令
add? ? ?添加本地資源到maxcomputer中
alias????為資源創(chuàng)建一個(gè)別名
delete/drop、desc/describe、download/get
使用限制
在進(jìn)行資源操作時(shí),請(qǐng)注意每個(gè)資源文件的大小不能超過(guò)500MB,單個(gè)SQL、MapReduce任務(wù)所引用的資源總大小不能超過(guò)2048MB,更多限制請(qǐng)參見MapReduce限制匯總。
項(xiàng)目
項(xiàng)目(Project)是MaxCompute的基本組織單元,它類似于傳統(tǒng)數(shù)據(jù)庫(kù)的Database或Schema的概念,是進(jìn)行多用戶隔離和訪問(wèn)控制的主要邊界。項(xiàng)目中包含多個(gè)對(duì)象,例如表(Table)、資源(Resource)、函數(shù)(Function)和實(shí)例(Instance)等。
一個(gè)用戶可以同時(shí)擁有多個(gè)項(xiàng)目的權(quán)限。通過(guò)安全授權(quán),可以在一個(gè)項(xiàng)目中訪問(wèn)另一個(gè)項(xiàng)目中的對(duì)象。
表
表是MaxCompute的數(shù)據(jù)存儲(chǔ)單元。它在邏輯上是由行和列組成的二維結(jié)構(gòu),每行代表一條記錄,每列表示相同數(shù)據(jù)類型的一個(gè)字段,一條記錄可以包含一個(gè)或多個(gè)列,表的結(jié)構(gòu)由各個(gè)列的名稱和類型構(gòu)成。
MaxCompute中不同類型計(jì)算任務(wù)的操作對(duì)象(輸入、輸出)都是表。
MaxCompute的表格有兩種類型:內(nèi)部表和外部表(MaxCompute2.0版本開始支持外部表)。
對(duì)于內(nèi)部表,所有的數(shù)據(jù)都被存儲(chǔ)在MaxCompute中,表中列的數(shù)據(jù)類型可以是MaxCompute支持的任意一種數(shù)據(jù)類型。
對(duì)于外部表,MaxCompute并不真正持有數(shù)據(jù),表格的數(shù)據(jù)可以存放在OSS或OTS中 。MaxCompute僅會(huì)記錄表格的Meta信息,您可以通過(guò)MaxCompute的外部表機(jī)制處理OSS或OTS上的非結(jié)構(gòu)化數(shù)據(jù),例如視頻、音頻、基因、氣象、地理信息等。
分區(qū)
分區(qū)表是指擁有分區(qū)空間的表,即在創(chuàng)建表時(shí)指定表內(nèi)的一個(gè)或者某幾個(gè)字段作為分區(qū)列。分區(qū)表實(shí)際就是對(duì)應(yīng)分布式文件系統(tǒng)上的獨(dú)立的文件夾,一個(gè)分區(qū)對(duì)應(yīng)一個(gè)文件夾,文件夾下是對(duì)應(yīng)分區(qū)所有的數(shù)據(jù)文件。
分區(qū)概述
分區(qū)可以理解為分類,通過(guò)分類把不同類型的數(shù)據(jù)放到不同的目錄下。分類的標(biāo)準(zhǔn)就是分區(qū)字段,可以是一個(gè),也可以是多個(gè)。
MaxCompute將分區(qū)列的每個(gè)值作為一個(gè)分區(qū)(目錄),您可以指定多級(jí)分區(qū),即將表的多個(gè)字段作為表的分區(qū),分區(qū)之間類似多級(jí)目錄的關(guān)系。
分區(qū)表的意義在于優(yōu)化查詢。查詢表時(shí)通過(guò)WHERE子句查詢指定所需查詢的分區(qū),避免全表掃描,提高處理效率,降低計(jì)算費(fèi)用。使用數(shù)據(jù)時(shí),如果指定需要訪問(wèn)的分區(qū)名稱,則只會(huì)讀取相應(yīng)的分區(qū)。

--創(chuàng)建一個(gè)二級(jí)分區(qū)表,以日期為一級(jí)分區(qū),地域?yàn)槎?jí)分區(qū)
CREATE TABLE src (key string, value bigint) PARTITIONED BY (pt string,region string);
--正確使用方式。MaxCompute在生成查詢計(jì)劃時(shí)只會(huì)將'20170601'分區(qū)下region為'hangzhou'二級(jí)分區(qū)的數(shù)據(jù)納入輸入中。
select * from src where pt='20170601'and region='hangzhou';
--錯(cuò)誤的使用方式。在這樣的使用方式下,MaxCompute并不能保障分區(qū)過(guò)濾機(jī)制的有效性。pt是STRING類型,當(dāng)STRING類型與BIGINT(20170601)比較時(shí),MaxCompute會(huì)將二者轉(zhuǎn)換為DOUBLE類型,此時(shí)有可能會(huì)有精度損失。
select * from src where pt = 20170601;?
生命周期
MaxCompute表的生命周期(Lifecycle),指表(分區(qū))數(shù)據(jù)從最后一次更新的時(shí)間算起,在經(jīng)過(guò)指定的時(shí)間后沒(méi)有變動(dòng),則此表(分區(qū))將被MaxCompute自動(dòng)回收。這個(gè)指定的時(shí)間就是生命周期。
資源
MaxCompute的資源(Resource)概念,可為MaxCompute特定操作提供資源依賴。
資源(Resource)是MaxCompute的特有概念,如果您想使用MaxCompute的自定義函數(shù)(UDF)或MapReduce功能需要依賴資源來(lái)完成,如下所示:
SQL UDF:您編寫UDF后,需要將編譯好的Jar包以資源的形式上傳到MaxCompute。運(yùn)行此UDF時(shí),MaxCompute會(huì)自動(dòng)下載這個(gè)Jar包,獲取您的代碼來(lái)運(yùn)行UDF,無(wú)需您干預(yù)。上傳Jar包的過(guò)程就是在MaxCompute上創(chuàng)建資源的過(guò)程,這個(gè)Jar包是MaxCompute資源的一種。
MapReduce:您編寫MapReduce程序后,將編譯好的Jar包作為一種資源上傳到MaxCompute。運(yùn)行MapReduce作業(yè)時(shí),MapReduce框架會(huì)自動(dòng)下載這個(gè)Jar資源,獲取您的代碼。您同樣可以將文本文件以及MaxCompute中的表作為不同類型的資源上傳到MaxCompute,您可以在UDF及MapReduce的運(yùn)行過(guò)程中讀取、使用這些資源。
MaxCompute支持上傳的單個(gè)資源大小上限為500MB,資源包括以下幾種類型:
File類型。
Table類型:MaxCompute中的表。
Jar類型:編譯好的Java Jar包。
Archive類型:通過(guò)資源名稱中的后綴識(shí)別壓縮類型,支持的壓縮文件類型包括.zip/.tgz/.tar.gz/.tar/jar。
MapReduce引用的table類型資源中,table字段類型目前只支持BIGINT、DOUBLE、STRING、DATETIME、BOOLEAN,其他類型暫未支持。
函數(shù)
MaxCompute提供的函數(shù)功能,包括內(nèi)建函數(shù)和UDF。
MaxCompute為您提供了SQL計(jì)算功能,您可以在MaxCompute SQL中使用系統(tǒng)的內(nèi)建函數(shù)完成一定的計(jì)算和計(jì)數(shù)功能。但當(dāng)內(nèi)建函數(shù)無(wú)法滿足要求時(shí),您可以使用MaxCompute提供的Java編程接口開發(fā)自定義函數(shù)(User Defined Function,以下簡(jiǎn)稱UDF)。
自定義函數(shù)(UDF)可以進(jìn)一步分為標(biāo)量值函數(shù)(UDF),自定義聚合函數(shù)(UDAF)和自定義表值函數(shù)(UDTF)三種類型。
您在開發(fā)完成UDF代碼后,需要將代碼編譯成Jar包,并將此Jar包以Jar資源的形式上傳到MaxCompute,最后在MaxCompute中注冊(cè)此UDF。
任務(wù)
任務(wù)(Task)是MaxCompute的基本計(jì)算單元,SQL及MapReduce功能都是通過(guò)任務(wù)完成的。
對(duì)于您提交的大多數(shù)任務(wù),特別是計(jì)算型任務(wù),例如SQL DML語(yǔ)句、MapReduce,MaxCompute會(huì)對(duì)其進(jìn)行解析,得到任務(wù)的執(zhí)行計(jì)劃。執(zhí)行計(jì)劃由具有依賴關(guān)系的多個(gè)執(zhí)行階段(Stage)構(gòu)成。
目前,執(zhí)行計(jì)劃邏輯上可以被看做一個(gè)有向圖,圖中的點(diǎn)是執(zhí)行階段,各個(gè)執(zhí)行階段的依賴關(guān)系是圖的邊。MaxCompute會(huì)依照?qǐng)D(執(zhí)行計(jì)劃)中的依賴關(guān)系執(zhí)行各個(gè)階段。在同一個(gè)執(zhí)行階段內(nèi),會(huì)有多個(gè)進(jìn)程,也稱之為Worker,共同完成該執(zhí)行階段的計(jì)算工作。同一個(gè)執(zhí)行階段的不同Worker只是處理的數(shù)據(jù)不同,執(zhí)行邏輯完全相同。計(jì)算型任務(wù)在執(zhí)行時(shí),會(huì)被實(shí)例化,您可以對(duì)這個(gè)實(shí)例(Instance)進(jìn)行操作,例如獲取實(shí)例狀態(tài)(Status Instance)、終止實(shí)例運(yùn)行(Kill Instance)等。
MaxCompute的ACID特性
原子性(Atomicity)
任何時(shí)候MaxCompute會(huì)保證在沖突時(shí)只會(huì)一個(gè)作業(yè)成功,其它沖突作業(yè)失敗。
對(duì)于單個(gè)表或分區(qū)的CREATE、OVERWRITE、DROP操作,可以保證其原子性。
跨表操作時(shí)不支持原子性(例如MULTI-INSERT)。
在極端情況下,以下操作可能不保證原子性:
DYNAMIC INSERT OVERWRITE多于一萬(wàn)個(gè)分區(qū),不支持原子性。
INTO類操作:這類操作失敗的原因是事務(wù)回滾時(shí)數(shù)據(jù)清理失敗,但不會(huì)造成原始數(shù)據(jù)丟失。
一致性(Consistency)
OVERWRITE類作業(yè)可保證一致性。
INTO類作業(yè)在沖突失敗后可能存在失敗作業(yè)的數(shù)據(jù)殘留。
隔離性(Isolation)
非INTO類操作保證讀已提交。
INTO類操作存在讀未提交的場(chǎng)景。
持久性(Durability)
MaxCompute保證數(shù)據(jù)的持久性。
功能
MaxCompute以數(shù)據(jù)為中心,內(nèi)建多種計(jì)算模型,滿足廣泛的數(shù)據(jù)分析需求。本文為您介紹每種計(jì)算模型在當(dāng)前可用區(qū)的開通情況。