370试机号后面出什么

高效使用 PyODPS 最佳实践-阿里云开发者社区

开发者社区> 大数据> 正文

高效使用 PyODPS 最佳实践

简介: 以更清晰的认知 PyODPS,DataWorks PyODPS 节点以及 PyODPS 何时在计算集群运行,开发者如何利用 PyODPS 更高效地进行数据开发。

pyodps shi maxcompute(odps) python sdk,wei maxcompute duixiangtigongle python duandecaozuojiekou,tongshi,duiyushuxi pandas deyonghulaishuo,tatigongle dataframe api laiyongleisi pandas dejiekoujinxingdaguimoshujufenxiyijichuli,bingnenggoufangbiandejiang maxcompute defenbushi dataframe xiangbendi pandas dataframe zhuanhuan。zhengyinweirucidefangbianlinghuo,zaishijishiyongguochengzhong,bushaoyonghurongyiba pyodps yongchengdanjichulimoshi,meiyouzuidaxiandufahui maxcompute fenbushiyunsuandexingneng。benwenzhuyaojieshaoruhegaoxiaodishiyong pyodps chulishuju。

概念

首先介绍基本概念。PyODPS 作为一个 SDK,本身运行于各种客户端,如下图所示,PyODPS 位于紫色部分,可以在是个人 PC,也可以是 DataWorks 的调度节点,或者 PAI Notebooks 的运行环境。需要注意的是,DataWorks 中的 PyODPS 节点也是一个资源非常受限的客户端运行容器,内置了 PyODPS 包以及必要的 Python 环境,并不使用 MaxCompute 资源,有较强的内存限制。因此合理利用 PyODPS 提供的分布式 DataFrame 功能,将主要的计算提交到 MaxCompute 分布式执行而不是在 PyODPS 客户端节点下载处理,是正确使用 PyODPS 的关键。这篇文章详细介绍了 。
image.png

尽量避免数据下载

370试机号后面出什么henduoyonghuxiguanyuyong pandas chulishuju。pyodps tigongle to_pandas jiekou,keyizhijiejiang maxcompute shujuzhuanhuacheng pandas dataframe shujujiegou,zheigejiekouhenshouhuanying。danzheigejiekouzhiyinggaibeiyongyuhuoquxiaoguimoshujuzuobendikaifadiaoshishiyong,erbushiyonglaidaguimochulishuju。shiyongzheigejiekouhuichufaxiazaixingwei,jiangweiyu maxcompute zhongdehailiangshujuxiazaidaobendi,ruguohouxucaozuodedoushibendide dataframe,zesangshile maxcompute dedaguimobingxingjisuannengli。erqie,shujuliangshaoda,danjineicunjiuhenrongyichansheng oom。

zhengquedeshiyongfangshi,shishiyong pyodps dataframe jiekoulaiwanchengshujuchuli。changjiandexuqiu,biruxuyaoduimeiyixingshujuchuliranhouxiehuibiao,huozheyixingshujuyaochaichengduoxing,doukeyitongguo pyodps dataframe zhongde map huozhe apply shixian,youdeshenzhizhixuyaoyixingdaima,zugougaoxiaoyujianjie。shiyongzheixiejiekouwomenzuizhongdouhuifanyicheng sql dao maxcompute jisuanjiqunzuofenbushijisuan,bingqiebendijihumeiyourenhedeneicunxiaohao,xianranxiangbiyudanjiyouhendadexingnengtisheng。xiamianwomenyiyigeshijidelizilaishuoming。

一个例子:分词

370试机号后面出什么yonghuxuyaotongguofenximeitianchanshengderizhizifuchuanlaitiquyixiexinxi,youyigezhiyouyiliedebiao,tadeleixingshi string,tongguo jieba fencikeyijiangzhongwenyujufenci,ranhouzaizhaodaoxiangyaodeguanjiancicunchudaoxinxibiaoli。henduorenhuixiguanyudanjichulishujudesiwei,yixingyixingdeduchushuju,ranhouyixingyixingdichulishuju,ranhouzaiyixingyixingdexierumubiaobiao,suoyidaimahuibianchengzheiyang:

import jieba
t = o.get_table('word_split')
out = []
with t.open_reader() as reader:
    for r in reader:
        words = list(jieba.cut(r[0]))
        #
        # 处理逻辑,产生出 processed_data
        #
        out.append(processed_data)
out_t = o.get_table('words')
with out_t.open_writer() as writer:
    writer.write(out)

370试机号后面出什么womenfenxiyixiazhenggeliucheng,xiazaishangchuanshujuxiaohaoledaliangdeshijian,bingqiezaizhixingjiaobendejiqishangxuyaohendadeneicunchulisuoyoudeshuju,tebieduiyu dataworks yonghu,henrongyichaoguomorenfenpeideneicunzhi,daozhi oom yunxingbaocuo。suoyizheiyangdewentiyinggaizenmejiejueni?daanjiushiliyong maxcompute defenbushinengli,pyodps jiunengbangnizuodaozheiyidian。

高效的分词

dangwomentichuyong pyodps dataframe gaixieshi,henduorenwangerquebu,xianshiqingkuangzhong,woshangmiandaimazhongyinqudeluojikenengfeichangfeichangfuza,youdeshenzhishangqianxing,yonghuhuijuedegaiqilaishibushitaifuzale,gaixiechengbenshibushitaiduo,qishidakebubidanxin,zhongjiandechuliguochengdabufenshibuxuyaodongde,womenliyong jiunengzuodaofenbushidezhixing:

from odps import output
out_table = o.get_table('words')
df = o.get_table('word_split').to_df()
@output(out_table.schema.names, out_table.schema.types)
def handle(row):
    import jieba
    words = list(jieba.cut(r[0]))
    #
    # 处理逻辑,产生出 processed_data
    #
    yield processed_data
df.apply(handle, axis=1).persist(out_table)

我们可以看到复杂逻辑都可以放在 handle 这个函数里,这个函数会被自动序列化到服务端作为 UDF 使用,在服务端调用执行,而且因为 handle 在服务端实际执行时也是对每一行进行处理的,所以逻辑上是没有区别的,不同的是,这样写的程序在提交到 MaxCompute 端执行时可以有多台机器帮你同时处理数据,可想而知时间上会节约很多,最后调用 persist 接口会将产生的数据直接写到另一张 MaxCompute 表中,所有的数据产生与消费都在 MaxCompute 集群完成,也节约了本地的网络与内存。另外在这个例子中我们也使用到了三方包,MaxCompute 是支持自定义函数中使用三方包的,可以参考 。所以,用户大可不必担心代码改动带来的成本,事实上主要逻辑几乎不要改动就可以享受到 MaxCompute 的大规模计算能力。

总结

370试机号后面出什么liyong pyodps,womenyouhenduozhonggenggaoxiaocaozuo maxcompute shujudefangshi,dajiayouzijizaishijianguochengzhonghuodedeganwuyekeyijijifenxiangchulai,gongtongtisheng maxcompute python shengtai。zuihou,fenxiangyiju pandas zuozhedeyijuhua:jingtongmianxiangshuzudebianchenghesiweifangshishichengwei python kexuejisuanniurendeyidaguanjianbuzhou。duoduoshiyong apply, map jiekou,rangwomendeshujufeiqilai!

版权声明:本文中所有内容均属于阿里云开发者社区所有,任何媒体、网站或个人未经阿里云开发者社区协议授权不得转载、链接、转贴或以其他方式复制发布/发表。申请授权请邮件developerteam@list.alibaba-inc.com,已获得阿里云开发者社区协议授权的媒体、网站,在转载使用时必须注明"稿件来源:阿里云开发者社区,原文作者姓名",违者本社区将依法追究责任。 如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件至:developer2020@service.mqyp382.cn 进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
+ 订阅

370试机号后面出什么dashujujisuanshijianleyuan,jinjulixuexiqianyanjishu

其他文章
2元中国福利彩票怎么看 2元彩不错 2元买彩票选几个数字 2元就可以打1毛的斗地主棋牌 2元中国福利彩票的买法 2元彩票网全国走势图 2元就可以打1毛的炸金花棋牌 2元彩票刮刮乐 2元彩是值得您信赖的 2元彩票