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 ,對表格進行上傳/下載
更多上傳下載相關參數請查看
https://help.aliyun.com/document_detail/27849.html?spm=5176.doc27864.6.154.k7rmpf
2.MaxCompute sql語句
sql語句樣例
在ODPS sql界面上可以很方便的執行sql語句,以下簡要介紹幾個odps上內建函數的使用。更多的內建函數請參考https://help.aliyun.com/document_detail/27864.html
聚類採樣
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參數請參考https://yq.aliyun.com/articles/60898。如果把參數設到了極限,sql分配的節點個數還是不能滿足需求的話,怎麼辦?沒事,我們還可以將表格進行分區,如下所述。2. 對表格進行分區:create table A_rowno asselect A_key, ROW_NUMBER() OVER(PARTITION BY 1 order by A_key) as row_nofrom 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_remainderfrom A_rowno;為了描述的方便,我將各個步驟分開來寫,實際操作中可以將一些合併起來寫。
3.MaxCompute UDF
編寫UDF參考https://yq.aliyun.com/articles/61887
4.MaxCompute數據和任務的線上監控
日常任務上線後,我們必須做好監控措施,這樣才能在任務發生異常後進行及時地發現錯誤然後糾正恢復。實時的任務監控可以訪問網站http://data.aliyun.com 里的大數據開發套件進行任務資源佔用的監控,並同時訪問任務返回的logview進行查看。
5.MaxCompute存儲優化
隨著應用中人數以及業務的不斷增加,ODPS應用里會有很多表的生成,這時候需要應用的負責人去做好ODPS的存儲優化https://yq.aliyun.com/articles/61532?spm=5176.100240.searchblog.22.anssTb,否則每周推送過來的應用資源消耗周賬單中的健康度會非常低,也比較浪費ODPS的存儲資源。
本來選自阿里雲大數據產品專家「隱林」,擅長MaxCompute、機器學習、分散式、可視化、人工智慧等大數據領域。推薦閱讀:
※天眼查全球發布智能AR眼鏡CHA Glass,首款商業安全眼鏡震撼上市
※AI若無人性 你我只是被任意曲解的數據碎片
※Spark 學習: spark 原理簡述
※Scala學習筆記04_Map與Tuple
※大數據的一些基本知識小結(1)
TAG:大數據 |