關(guān)于MaxComputer的學(xué)習(xí)筆記(2)

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è)別名

?alter????

cost、create

delete/dropdesc/describe、download/get

extended

flag/flags、functions

get

help、history

jar/mapreduce

kill

lifecycle、list

odpscmd

partition

q/quit

resource

set、showstatus

tunnel

upload

waitwho

使用限制

在進(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ù)可以存放在OSSOTS中 。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ū)的開通情況。



最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容