標籤:

MaxCompute(原ODPS)使用總結-初級篇

引言

本文面向的讀者是要使用ODPS sql進行一些數據查詢和挖掘,或者要使用ODPS udf自定義函數的用戶。本文試圖達到三個目標:(1)針對應用管理者來講,看完本文後可以比較清晰的去管理自己的應用;(2)針對ODPS sql使用者來講,本文在sql語句的內建函數使用以及sql語句加速方面,給出了一些例子;(3)針對ODPS UDF使用者和開發者來講,本文提供了一個UDF函數創建的完整例子並給出了無IDE依賴的java工程,可直接在公司內部機器上編譯使用。具體的內容安排如下。

  • 第1節介紹了ODPS數據上傳下載的一些知識,通過本章你可以將數據上傳到ODPS中亦可將ODPS中的數據下載到本地。
  • 第2節闡述了ODPS sql語句中一些內建函數的使用以及sql語句加速的一些技巧。
  • 第3節闡述了ODPS UDF函數的創建以及使用的整個例子,歡迎大家一起貢獻常用的UDF函數。
  • 第4節中介紹了如何實時的進行在線以及離線的任務監控。
  • 第5節中介紹了如何進行ODPS存儲優化。

1.MaxCompute數據上傳下載

使用Datahub ,對表格進行上傳/下載

更多上傳下載相關參數請查看

help.aliyun.com/documen

2.MaxCompute sql語句

sql語句樣例

在ODPS sql界面上可以很方便的執行sql語句,以下簡要介紹幾個odps上內建函數的使用。更多的內建函數請參考help.aliyun.com/documen

聚類採樣

create table A_sample as

select `(sample_flag)?+.+` from

(

select *, cluster_sample(20, 1) over (partition by A_key1) as sample_flag

from A

) sample

where sample_flag=true;

行記錄合併

create table A_group as

select A_key1, wm_concat(,, A_key2) as A_key2s from A

group by A_key1;

計算分割串個數

create table A_count_key_size as

select *, size(split(A_key, ,)) as A_key_count

from A;

行記錄序號打標

create table A_rowno as

select *, ROW_NUMBER() OVER(PARTITION BY 1 order by A_key) as row_no

from A;

sql單語句加速

如何控制ODPS原生sql語句分配的節點個數?有以下兩種方法可以設置。

1.通過參數設置:

set odps.sql.mapper.merge.limit.size=64;

set odps.sql.mapper.split.size=256;

這兩個sql參數可以控制分配的節點個數,更多sql參數請參考yq.aliyun.com/articles/。如果把參數設到了極限,sql分配的節點個數還是不能滿足需求的話,怎麼辦?沒事,我們還可以將表格進行分區,如下所述。

2. 對表格進行分區:

create table A_rowno as

select A_key, ROW_NUMBER() OVER(PARTITION BY 1 order by A_key) as row_no

from A;

create table A_pt

(A_key string

)

partitioned by (row_remainder bigint);

insert overwrite table A_pt partition(row_remainder)

select A_key, row_no%2000 as row_remainder

from A_rowno;

為了描述的方便,我將各個步驟分開來寫,實際操作中可以將一些合併起來寫。

3.MaxCompute UDF

編寫UDF參考yq.aliyun.com/articles/

4.MaxCompute數據和任務的線上監控

日常任務上線後,我們必須做好監控措施,這樣才能在任務發生異常後進行及時地發現錯誤然後糾正恢復。實時的任務監控可以訪問網站http://data.aliyun.com 里的大數據開發套件進行任務資源佔用的監控,並同時訪問任務返回的logview進行查看。

5.MaxCompute存儲優化

隨著應用中人數以及業務的不斷增加,ODPS應用里會有很多表的生成,這時候需要應用的負責人去做好ODPS的存儲優化yq.aliyun.com/articles/,否則每周推送過來的應用資源消耗周賬單中的健康度會非常低,也比較浪費ODPS的存儲資源。

本來選自阿里雲大數據產品專家「隱林」,擅長MaxCompute、機器學習、分散式、可視化、人工智慧等大數據領域。

推薦閱讀:

天眼查全球發布智能AR眼鏡CHA Glass,首款商業安全眼鏡震撼上市
AI若無人性 你我只是被任意曲解的數據碎片
Spark 學習: spark 原理簡述
Scala學習筆記04_Map與Tuple
大數據的一些基本知識小結(1)

TAG:大數據 |