MaxCompute SQL開發基礎

SQL基礎知識

MaxCompute沒有事務概念、主鍵、索引,不支持update和delete操作

MaxCompute SQL是什麼?

MaxCompute SQL是個數據處理工具
Query解析後,計算和存儲交由底層的飛天實現
MaxCompute SQL採用的類似於SQL的語法,可以看作是標準SQL的子集,但不能因此簡單地把MaxCompute等價成一個數據庫
MaxCompute SQL每個作業的準備,提交階段要話費較長時間,實時性不高。
目前MaxCompute SQL長度有限制,單條不超過2M。

MaxCompute中的數據組織

Project項目空間:

MaxCompute的所有對象都隸屬於項目空間
項目時maxcompute計量計費及安全控制的基本單元

Table表:

所有的數據都存儲在表裏
支持表分區,支持依賴於表的視圖

Partition分區:

上傳時,手工創建分區並保證質量,需指定分區。
使用insert數據時支持動態分區

MaxCompute SQL的約束

不支持事務
不支持主/外鍵
不支持索引
不支持Update/Delete

MaxCompute SQL的適用場景

MaxCompute SQL適用於海量數據(GB、TB、EB級別),離線批量計算的場合。
不適合直接對接需要每秒處理幾千至數萬筆事物的前臺業務系統,因爲不支持事物,響應時間會比較長
Maxcompute SQL的每個作業的準備,提交等階段都要花費較長時間,因此實時性不高。

MaxCompute SQL的關鍵字

MaxCompute將SQL語句的關鍵字作爲保留字。在對錶、列或是分區命名時如果使用關鍵字,需給關鍵字價"符合進行轉意,否則會報錯。保留字不區分大小寫。常見如下:
% & && 等。

MaxCompute SQL的類型轉換

顯示轉換:指用cast將一種數據類型的值轉換爲另一種類型的值的行爲。
隱式轉換:是指依據上下文使用環境及類型轉換規則自動進行的類型轉換。

MaxCompute SQL的運算符

關係:< >
算術:+ -
位:&
邏輯:and or not

SQL Task介紹

MaxCompute SQL作業提交後,形成任務task,執行時形成任務實例instance,其執行過程自動調用Mapreduce。通過logview監控執行過程。

Mapreduce

MapReduce是面向大數據並行處理的計算模型、框架和平臺,它隱含了以下三層含義:
1)MapReduce是一個基於集羣的高性能並行計算平臺。它允許用市場上普通的商用服務器構成一個包含數十、數百至數千個節點的分佈和並行計算集羣。
2)MapReduce是一個並行計算與運行軟件框架。它提供了一個龐大但設計精良的並行計算軟件框架,能自動完成計算任務的並行化處理,自動劃分計算數據和計算任務,在集羣節點上自動分配和執行任務以及收集計算結果,將數據分佈存儲、數據通信、容錯處理等並行計算涉及到的很多系統底層的複雜細節交由系統負責處理,大大減少了軟件開發人員的負擔。
3)MapReduce是一個並行程序設計模型與方法。它藉助於函數式程序設計語言Lisp的設計思想,提供了一種簡便的並行程序設計方法,用Map和Reduce兩個函數編程實現基本的並行計算任務,提供了抽象的操作和並行編程接口,以方便地完成大規模數據的編程和計算處理。
MaxCompute SQL的主要功能
1、支持各類運算符
2、通過DDL語句對錶、分區以及視圖進行管理
3、通過select語句查詢表中的記錄,通過where語句過濾表中的記錄。
4、通過insert語句插入數據、更新數據
5、通過等值連接join操作,支持兩張表的關聯。支持多張小表的mapjoin。
6、支持通過內置函數和自定義函數來進行計算。
7、支持正則表達式。
正則表達式,又稱規則表達式(英語:Regular Expression,在代碼中常簡寫爲regex、regexp或RE),計算機科學的一個概念。正則表達式通常被用來檢索、替換那些符合某個模式(規則)的文本。

數據定義DDL

CREATE[EXTERNAL] table [IF NOT EXISTS] table_name
[(col_name data_type [COMMENT col_comment],…)]
[COMMENT table_comment]
[PARTITIONED BY (col_name data_type [COMMENT col_comment],…)]
[STORED BY StorageHandler] --僅爲外部表
[WITH SERDEPROPERTIES(Options)] --僅限外部表
[LOCATION OSSLocation];--僅限外部表
[LIFECYCLE days] [AS select_statement];
CREATE TABLE [IF NOT EXISTS] table_name LIKE existing_table_name

創建表實例:

快捷建表操作-CTAS

快捷鍵建表操作-示例:

create table test4 like test3;
--除生命週期屬性外,test3的其他屬性(字段類型、分區類型)均與test4完全一致。
create table test5 as select * from test2;
--這個操作會創建test5,但分區,生命週期信息不會被拷貝到目標表中。另外操作還會將test2的數據複製到test5中。
添加/刪除分區
add/drop

表的其他操作

視圖

生命週期

數據操作DML

insert操作-更新表中數據

insert操作-更新動態分區表中的數據

多路輸出(MULTIINSERT)

insert操作-values

select操作-查詢語法

select操作-where條件

select-其他字句

select操作-子查詢幾種形式

select-union all

select-join

select操作-semi join半連接

select操作-map join hint

select操作-map join hint說明

select操作-CTE

內置函數Build-in Function

值函數

數據運算函數

字符串處理函數

日期類型處理函數

窗口函數

聚合函數

其他函數

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章