妙用Dataphin的Python三方包管理

本文涉及的产品
智能数据建设与治理Dataphin,200数据处理单元
简介: Dataphin 中的 Python 计算任务不随意增加内置 module 是为了避免安装包过大和升级时间延长。用户可通过执行 "pip list" 或 "pip3 list" 查看内置 module 列表。 Dataphin 的 Python 环境在镜像中固定,无法用户直接修改,但 v3.14 版本起支持在线安装或上传安装三方包,预安装后在任务中显式引入。对于依赖操作系统库的 module,用户需上传包含相应程序的自定义安装包进行预安装。此外,此功能也可扩展用于管理 shell 任务所需的系统程序。

Dataphin 中使用 Python 计算任务时,经常会遇到想要使用的 module 未被系统内置。那为什么 Dataphin 不能随时增加内置 module,也不在新版本中添加更多 module 呢?


问: Datpahin 目前内置了哪些 module,都是什么版本?

答: 各个版本的内置 module 清单可能会有差异,可以在 shell 任务中执行 “pip list” (Python 2.7) 或 “pip3 list” (Python 3.7)来查看内置的 module 清单。


问: Dataphin 每个新版本为啥不能定期将用户所需要的 module 额外内置进去?

答: Dataphin 的用户比较多,各家所需要的 module 不一样,module 版本也有差异。如果全部都内置,安装包会膨胀得很大,升级部署的时间会变长。


问: Dataphin 为啥不能由用户自行管理内置 module,让用户随时可以添加新的 module?

答: Dataphin 是容器化部署,通过镜像文件分发安装部署文件,镜像生成后无法在用户侧修改。Python 的执行环境在镜像中已经固定不可修改,每次运行 Python 脚本,是从镜像“克隆”出的一个可运行的“实例”。在这个“实例”里面,可以安装新的 module,但是运行结束后,“实例”整个会被销毁。所有对“实例”环境本身的“变更”,如安装 Python module,都随之销毁了。


Python 三方包管理

Dataphin 在 v3.14 版本上线了 Python 三方包管理功能,提供了以下能力:

  1. 在线安装 Python 三方包(v4.0+),支持输入 module 的名称,系统自动连接镜像源安装指定 module 在所选 Python 版本下的最新版本。支持配置企业自有的镜像源。使用在线安装的前提是,Dataphin 可以连接到镜像源。连接内置镜像源,需要能连接访问公网。
  2. 上传安装,如果无法使用在线安装或安装过程需要有其他操作,可以使用此种方式。具体使用方式可查看产品文档或根据页面提示说明。


Dataphin 的“Python 三方包”管理功能中的安装实际上是“预安装”,作用是下载安装资源(在线安装)或校验安装资源是否满足安装条件(上传安装)。预安装会在一个虚拟环境真实执行一遍安装动作,成功安装后,整个虚拟环境就被销毁了。当任务需要使用三方包时,需要在任务上显式引入已安装(已预安装)的 module,每次执行 Python 脚本时,系统都会自动在本次的“实例”中重新安装 module ,执行结束后,“实例”就被销毁了。任务显式引入 module 的方式如下:


  1. 新建 Python 或 shell 任务对话框,“Python 三方包”下拉多选所需 module


  1. 编辑 Python 或 shell 任务,在“属性-Python 三方包”中设置 module



Python 三方包管理进阶使用

有一些 Python module 除了 Python 资源外,还依赖操作系统的一些 lib。安装这类 module,可能会遇到 module 安装成功,但是无法正常使用,错误信息告知所依赖外部 lib/程序不存在或版本不满足。下面通过一个示例来说明。


Dataphin 内置的 pyodps 的版本是 0.8.0,有的用户可能需要使用更高版本的 pyodps,比如 0.11.6 。在“Python 三方包”中安装 pyodps-0.11.6 (在线安装或上传*.whl 均可)后,实验执行见下图


可以看到:

  1. pyodps-0.11.6 安装成功
  2. from dataphin import odps 时报错了,提示当前版本依赖 OpenSSL 1.1.1+,而系统当前 OpenSSL 的版本是 1.0.2k。OpenSSL 是操作系统的一个程序,通过 SSL/TLS 方式连接外部服务时,需要调用该程序。


升级 pyodps 到 0.11.6,除了 pyodps 本身外,还需要升级操作系统下的 OpenSSL。下文是步骤说明:

  1. 在本地新建目录(文件夹) openssl
  2. 下载 openssl-1.1.1,下载地址为:  https://www.openssl.org/source/old/1.1.1/openssl-1.1.1k.tar.gz,保存到 openssl 目录下
  3. 在 openssl 目录下新建 shell 脚本 setup.sh, 代码内容如下
#!/bin/bash
# setup.sh

# 执行安装
tar -zxvf openssl-1.1.1k.tar.gz
cd openssl-1.1.1k/
./config --prefix=/usr/local/openssl --openssldir=/usr/local/openssl shared zlib
make
make install
mv /usr/bin/openssl /usr/bin/openssl.bak
ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl

# 设置环境
echo "/usr/local/openssl/lib" | sudo tee /etc/ld.so.conf.d/openssl.conf
ldconfig
export PATH=/usr/local/openssl/bin:$PATH
  1. openssl 目录下的文件内容如下

  1. 选中 openssl-1.1.1k.tar.gz 和 setup.sh,打包为 openssl.zip,注意: setup.sh 必须在 openssl.zip 的根目录下。
  2. 在 “Python 三方包”管理中,“安装 Python Module”,选择“上传安装-自定义安装包”,上传 openssl.zip, 点击“确定”后开始预安装。

  1. 预安装成功后,在任务中增加 openssl 的引用,重新执行后见下图


写在最后

Python 三方包管理一开始的设计目标只是帮助用户更方便引入 Python module (在线安装或上传 *.whl 安装),发现某些 module 同时还需要对安装或升级操作系统的某些程序后,才增加了“上传自定义安装包”方式安装。聪明的你应该意识到,这种方式也可以用于在 shell 任务中安装一些 shell 任务所需要的系统程序。这个功能已经不完全是“Python 三方包”管理了,而是“三方程序”管理。

相关文章
|
12天前
|
SQL 关系型数据库 数据库连接
|
安全 Python
使用Python3.7+Tornado5.1集成新浪微博三方登录(无需企业资质)
新浪微博:山寨版的twitter,各种粉丝的集散地,天朝人民的最爱,基本上网民都人手一个微博账号,所以使用新浪微博账号进行三方登录来提高用户登录体验就显得尤为重要,本次使用Python3+Tornado5来集成微博登录,记录一下,坑还是不少的。
使用Python3.7+Tornado5.1集成新浪微博三方登录(无需企业资质)
|
10月前
|
SQL DataWorks 监控
Dataphin常见问题之数据怎么都补不过去如何解决
Dataphin是阿里云提供的一站式数据处理服务,旨在帮助企业构建一体化的智能数据处理平台。Dataphin整合了数据建模、数据处理、数据开发、数据服务等多个功能,支持企业更高效地进行数据治理和分析。
|
10月前
|
存储 Oracle 关系型数据库
Dataphin常见问题之想要周期执行任务如何解决
Dataphin是阿里云提供的一站式数据处理服务,旨在帮助企业构建一体化的智能数据处理平台。Dataphin整合了数据建模、数据处理、数据开发、数据服务等多个功能,支持企业更高效地进行数据治理和分析。
|
10月前
|
SQL 分布式计算 DataWorks
Dataphin常见问题之补数据任务卡着不动如何解决
Dataphin是阿里云提供的一站式数据处理服务,旨在帮助企业构建一体化的智能数据处理平台。Dataphin整合了数据建模、数据处理、数据开发、数据服务等多个功能,支持企业更高效地进行数据治理和分析。
|
10月前
|
Java 数据处理 调度
Dataphin常见问题之离线管道同步数据datax就报连接超时如何解决
Dataphin是阿里云提供的一站式数据处理服务,旨在帮助企业构建一体化的智能数据处理平台。Dataphin整合了数据建模、数据处理、数据开发、数据服务等多个功能,支持企业更高效地进行数据治理和分析。
|
10月前
|
JSON 缓存 运维
Dataphin数据服务API开启IP白名单调用鉴权
Dataphin数据服务API提供便捷的API开发及运维、应用调用权限管理等功能,为数据业务化提供了坚实的支撑。在应用调用API的时候,Dataphin可支持通过AcessKey方式的调用鉴权。而在企业内部网络中,也可以使用IP白名单方式简化调用。本文将为您介绍如何开启IP白名单的调用鉴权。
276 0
|
2月前
|
安全 数据挖掘 大数据
开放、兼容的数据建设与治理平台——瓴羊Dataphin“进化论” |【瓴羊数据荟】数据MeetUp第三期
Dataphin的技术架构与实践路径,涵盖多引擎兼容、混合云架构、统一资产消费等方面,Dataphin通过持续升级,帮助企业实现全生命周期的数据资产管理,助力企业在大模型时代更好地“建好数据”、“用好数据”。
302 87
开放、兼容的数据建设与治理平台——瓴羊Dataphin“进化论” |【瓴羊数据荟】数据MeetUp第三期
|
7天前
|
数据采集 SQL 人工智能
告别数据混乱:瓴羊Dataphin 通过AI+标准让企业数据“活”起来 | 【瓴羊数据荟】数据MeetUp第四期
AI技术的快速发展促使企业重新审视数据治理的重要性。当前,企业在数据治理中常因指标口径不统一、数据血缘不透明等问题陷入困境。阿里云智能集团瓴羊高级技术专家周鑫提出,以数据标准为核心贯穿数据全生命周期,可有效解决治理难题。
63 15
告别数据混乱:瓴羊Dataphin 通过AI+标准让企业数据“活”起来 | 【瓴羊数据荟】数据MeetUp第四期