本文为您介绍如何在PyODPS中使用第三方包。

前提条件

操作步骤

  1. 下载下表中资源包。
    资源包名 下载路径 资源名称
    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资源。
  2. 登录DataWorks控制台
  3. 新建业务流程。
    1. 在左侧导航栏选择工作空间列表
    2. 工作空间列表页面选择对应的项目,单击操作进入数据开发
    3. DataStudio页面,右键单击业务流程,选择新建业务流程
    4. 新建业务流程对话框,输入业务名称,单击新建
  4. 在DataWorks中创建和提交资源。
    1. DataStudio页面,鼠标悬停至新建图标,选择MaxCompute > 资源 > Archive
      您也可以打开相应的业务流程,右键单击MaxCompute,选择新建 > 资源 > Archive
    2. 新建资源对话框,单击点击上传,在本地选择python-dateutil-2.6.0.zip文件。新建资源
    3. 资源名称重命名为python-dateutil.zip,单击新建修改资源名称
      说明 资源名称命名规则请参见步骤一下载资源包
    4. 单击提交图标,在提交新版本对话框填写变更描述后单击确认提交资源
    5. 按照上述步骤完成资源pytz.zipsix.tar.gzpandas.zipsklearn.zipscipy.zip的创建与提交。
  5. 新建PyODPS节点。
    1. DataStudio页面,右键单击新建的业务流程,选择MaxCompute > 数据开发 > 新建 > PyODPS 2
    2. 新建节点对话框,输入节点名称,单击提交
    3. 在新建的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)
                                  
  6. 运行日志中查看运行结果。
    运行结果如下。
    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