妙用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 三方包”管理了,而是“三方程序”管理。

相关文章
|
安全 Python
使用Python3.7+Tornado5.1集成新浪微博三方登录(无需企业资质)
新浪微博:山寨版的twitter,各种粉丝的集散地,天朝人民的最爱,基本上网民都人手一个微博账号,所以使用新浪微博账号进行三方登录来提高用户登录体验就显得尤为重要,本次使用Python3+Tornado5来集成微博登录,记录一下,坑还是不少的。
使用Python3.7+Tornado5.1集成新浪微博三方登录(无需企业资质)
|
7月前
|
存储 数据采集 安全
瓴羊Dataphin数据安全能力再升级,内置分类分级模板、上线隐私计算模块
瓴羊Dataphin数据安全能力再升级,内置分类分级模板、上线隐私计算模块
211 0
|
2月前
|
存储 人工智能 安全
【荣誉奖项】荣获2024数据治理优秀产品!瓴羊Dataphin联合DAMA发布数据管理技能认证
瓴羊Dataphin连续俩年获得DAMA年度优秀数据治理产品奖,本次与DAMA联合发布“DAMA x 瓴羊 数据管理技能认证”,助力提升全民数据素养。
165 0
【荣誉奖项】荣获2024数据治理优秀产品!瓴羊Dataphin联合DAMA发布数据管理技能认证
|
6月前
|
数据采集 数据可视化 数据管理
【企业实践】台州银行携手瓴羊Dataphin共建数据平台,打造小微金融治理新标杆
台州银行数据治理项目携手瓴羊Dataphin,荣获中国信息通信研究院评为“2023年铸基计划高质量数字化转型典型优秀案例”、数字化研究机构沙丘社区选为“2024中国数据资产管理最佳实践案例”双重认可。
577 4
【企业实践】台州银行携手瓴羊Dataphin共建数据平台,打造小微金融治理新标杆
|
7月前
|
存储 运维 大数据
瓴羊Dataphin发布新能力,实现一体化、轻量化、布局流通
瓴羊Dataphin发布新能力,实现一体化、轻量化、布局流通
183 0
|
7月前
|
人工智能 安全 大数据
喜报|瓴羊Dataphin入选上海市经信委2023创新攻关成果、IDC企业大数据治理研究代表产品
喜报|瓴羊Dataphin入选上海市经信委2023创新攻关成果、IDC企业大数据治理研究代表产品
107 0
|
7月前
|
UED
瓴羊Dataphin V3.8 升级速递丨强化数据治理、提升标签洞察力、灵活管理诉求……
瓴羊Dataphin V3.8 升级速递丨强化数据治理、提升标签洞察力、灵活管理诉求……
带你读《构建企业级好数据(Dataphin智能数据建设与治理白皮书)》——四、关于瓴羊
带你读《构建企业级好数据(Dataphin智能数据建设与治理白皮书)》——四、关于瓴羊
154 0
|
SQL 安全 搜索推荐
瓴羊Dataphin升级V3.11,新上线数据分析、隐私计算平台促进数据流通消费
瓴羊旗下开发云核心产品Dataphin(智能数据建设与治理)近期升级到V3.11版本,全新上线Notebook数据分析空间,以及Dataphin隐私计算平台,在数据采、建、管、用的基础上,进一步强化数据消费和数据流通能力,帮助企业用标准化的产品能力,在大数据时代构建起生产经济、质量可靠、安全稳定、消费便捷的企业级数据资产,促进数据价值释放。
14420 3
|
Kubernetes 大数据 数据处理
瓴羊Dataphin调度性能突破「千万级」,数据处理更快更稳
升级后的Dataphin V3.11版本,可以在24小时内完成3800万的实例调度,较之前的V3.9版本,取得了显著的优化成果,整体提升25.4倍,可支持超复杂依赖关系,比如在宽度100万,深度20,以及宽度20,深度一百万的2类调度测试场景中,全链路调度耗时有明显减少,即席查询性能提升也十分明显。
487 0