本文为您介绍如何在PyODPS中使用第三方包。
前提条件
- 已开通MaxCompute产品。如何开通请参见开通MaxCompute。
- 已开通DataWorks产品。如何开通请参见开通DataWorks。
操作步骤
- 下载下表中资源包。
资源包名 下载路径 资源名称 python-dateutil python-dateutil-2.6.0.zip python-dateutil.zip pytz pytz-2017.2.zip pytz.zip six six-1.11.0.tar.gz six.tar.gz pandas pandas-0.20.2-cp27-cp27m-manylinux1_x86_64.whl pandas.zip scipy scipy-0.19.0-cp27-cp27m-manylinux1_x86_64.whl scipy.zip scikit-learn scikit_learn-0.18.1-cp27-cp27m-manylinux1_x86_64.whl sklearn.zip 说明- 您需要手动将下载后的pandas、scipy等资源包后缀.whl修改为.zip,并进行重命名与上述表格资源名称保持一致。
- 上述资源后续需要上传为Archive资源。
- 登录DataWorks控制台。
- 新建业务流程。
- 在左侧导航栏选择工作空间列表。
- 在工作空间列表页面选择对应的项目,单击操作列进入数据开发。
- 在DataStudio页面,右键单击业务流程,选择新建业务流程。
- 在新建业务流程对话框,输入业务名称,单击新建。
- 在DataWorks中创建和提交资源。
- 在DataStudio页面,鼠标悬停至
图标,选择MaxCompute > 资源 > Archive。
您也可以打开相应的业务流程,右键单击MaxCompute,选择新建 > 资源 > Archive。 - 在新建资源对话框,单击点击上传,在本地选择python-dateutil-2.6.0.zip文件。
- 将资源名称重命名为python-dateutil.zip,单击新建。说明 资源名称命名规则请参见步骤一下载资源包。
- 单击
图标,在提交新版本对话框填写变更描述后单击确认。
- 按照上述步骤完成资源pytz.zip、six.tar.gz、pandas.zip、sklearn.zip和scipy.zip的创建与提交。
- 在DataStudio页面,鼠标悬停至
- 新建PyODPS节点。
- 在DataStudio页面,右键单击新建的业务流程,选择MaxCompute > 数据开发 > 新建 > PyODPS 2。
- 在新建节点对话框,输入节点名称,单击提交。
- 在新建的PyODPS节点中,输入代码后单击
图标。
代码示例如下。def test(x): from sklearn import datasets, svm from scipy import misc import numpy as np iris = datasets.load_iris() assert iris.data.shape == (150, 4) assert np.array_equal(np.unique(iris.target), [0, 1, 2]) clf = svm.LinearSVC() clf.fit(iris.data, iris.target) pred = clf.predict([[5.0, 3.6, 1.3, 0.25]]) assert pred[0] == 0 assert misc.face().shape is not None return x from odps import options hints = { 'odps.isolation.session.enable': True } libraries = ['python-dateutil.zip', 'pytz.zip', 'six.tar.gz', 'pandas.zip', 'scipy.zip', 'sklearn.zip'] iris = o.get_table('pyodps_iris').to_df() print iris[:1].sepallength.map(test).execute(hints=hints, libraries=libraries)
- 在运行日志中查看运行结果。运行结果如下。
Sql compiled: CREATE TABLE tmp_pyodps_a3172c30_a0d7_4c88_bc39_434168263897 LIFECYCLE 1 AS SELECT pyodps_udf_1576485276_94d9d978_af66_4e27_a874_e787022dfb3d(t1.`sepallength`) AS `sepallength` FROM WB_BestPractice_dev.`pyodps_iris` t1 LIMIT 1 Instance ID: 20191216083438175gcv6n4pr2 Log view: http://logview.odps.aliyun.com/logview/?h=xxxxxx sepallength 0 5.1
说明 最佳实践案例请参见PyODPS节点实现结巴中文分词(使用第三方包)。