MaxCompute(原ODPS)使用总结-初级篇

    xiaoxiao2026-05-07  16

    转载自jiyi 引言

            本文面向的读者是要使用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 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 00 as row_remainder from 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购买咨询”钉钉群(群号: 11782920)进行咨询,群二维码如下:

     
    最新回复(0)