PyODPS 中使用 Python UDF

来源:互联网 发布:excel单元格数据分行 编辑:程序博客网 时间:2024/05/18 00:45

PyODPS 中使用 Python UDF 包含两方面,一个是直接使用,也就是在 MaxCompute SQL 中使用;一个是间接的方式,也就是 PyODPS DataFrame,这种方式你不需要直接写 Python UDF,而是写普通的 Python 函数或者类。下面我们分开说明。

作为准备工作,我们需要 ODPS 入口,可以通过直接初始化,或者使用 room 机制 加载。

from odps import ODPSo = ODPS('your-access-id', 'your-access-key', 'your-project')

MaxCompute SQL 中使用 Python UDF

首先,我们需要写一个 Python 文件,假设我们就是把某一列按 csv 格式放的一列转成 json 格式。

import jsonfrom odps.udf import annotate@annotate('string->string')class Transform(object):    def evaluate(self, x):        columns = list('abc')        d = dict(zip(columns, x.split(',')))        return json.dumps(d)

假设这个文件叫 my.py,接下来我们就需要创建 py 资源。

r = o.create_resource('csv_to_json.py', 'py', fileobj=open('my.py'))

fileobj 参数也可以是 str 类型,就是表示文件的内容

我有几张阿里云幸运券分享给你,用券购买或者升级阿里云相应产品会有特惠惊喜哦!把想要买的产品的幸运券都领走吧!快下手,马上就要抢光了。

接着我们就可以创建 Python UDF 了。

o.create_function('csv_to_json', class_type='csv_to_json.Transform', resources=[r])

这里我们指定了函数名叫 csv_to_json,主类使我们上传的 csv_to_json.py 文件里的 Transform 类。

现在我们就可以在 MaxCompute SQL 中调用这个 UDF 了。

o.execute_sql('select csv_to_json(raw) from pyodps_test_udf')

这样我们就完成了在 PyODPS 中使用 MaxCompute SQL + Python UDF 的整个过程。

PyODPS DataFrame

对于 PyODPS DataFrame 来说,用户只需要写普通的 Python 函数或者类,在函数或者类里,甚至可以读取全局变量,这样给开发带来了极大的方便。

和上面的例子目标相同,我们定义一个 transform 函数即可。然后我们对于 DataFrame 的一列调用 map 方法来应用这个函数。

原文链接

阅读全文
'); })();
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 ip查询工具 申请固定ip多少钱 独立ip ip电话系统 ip网关 电信固定ip多少钱 ip检测 ip工具 主机ip ip测试 独立ip主机 固定ip租用 同ip网站查询 免费代理ip ip网游加速器 无线网ip地址冲突 ip流量购买 联通ip ip网游加速器免费版 免费代理ip软件 宽带ip地址查询 独立ip服务器 宽带ip 手机ip代理 买ip流量 免费ip加速器 ip phone ip 流量 国外代理ip ip网络加速器 ip搜索工具 域名绑定ip 国内独立ip空间 ip查找 网络ip切换器 ip限制 电信的ip ip man ip电话 移动 固定ip服务器 固定电话ip