本文为您介绍如何在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和scikit-learn资源文件需要您手动压缩为与 上传资源名同类型的压缩包,才可以上传。
  2. 登录DataWorks控制台
  3. 新建业务流程。
    1. 进入数据开发,右键单击业务流程,选择新建业务流程
    2. 新建业务流程对话框,输入业务名称,单击新建,完成业务流程创建。
  4. 在DataWorks中创建和提交资源。
    1. 右键单击业务流程,选择新建 > MaxCompute > 资源 > Archive,完成Archive资源创建。
    2. 新建资源对话框,单击点击上传,选择python-dateutil-2.6.0.zip文件。点击上传资源
    3. 将资源名称命名为python.dateutil.zip,单击确定资源重命名
    4. 单击提交,完成本次上传。提交资源
    5. 按照上述步骤完成资源pytz.zipsix.tar.gzpandas.zipsklearn.zipscipy.zip的创建与提交。
  5. 新建PyODPS节点。
    1. 右键单击业务流程,选择新建 > 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. 单击运行
  7. 运行日志中查看运行结果,如下所示。
    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节点实现结巴中文分词