阿里云DataWorks-部署自定义python项目问题

简介: 阿里云DataWorks-多种方式部署自定义python项目并进行调度

1. 问题描述

如下图所示项目结构,项目下存在main.py主文件,有自定义的python package(config以及utils两个module),希望能在dataworks上部署并调度、运行起来。

image.png image.png

2. 解决方案

2.1. 方案1

参考dataworks官方文档:

https://help.aliyun.com/zh/dataworks/use-cases/use-a-pyodps-node-to-reference-a-third-party-package?spm=a2c4g.11186623.0.i19#section-zvo-alt-b9q

如上图所示project结构,将time_config.py,local_vars.py通过【资源->新建资源->python】创建资源 image.png

将项目中的main.py的主文件,创建pyodps3的节点,并将代码复制进去,使用

##@resource_reference{"local_vars.py"}
sys.path.append(os.path.dirname(os.path.abspath('local_vars.py'))) #引入资源至工作空间。
# from utils.local_vars import ali_name
# 修改引用代码 如下
from local_vars import ali_name

的方式引用该python脚本并添加到sys path中确保可以后续进行import

image.png

2.2. 方案2

直接将project通过zip打包,通过【资源->新建资源->archive】 上传zip资源并提交到生产环境,这时候dataworks也会将这个zip包传到对应的odps的项目。

dataworks界面:

image.png

odps界面看下resource:

image.png

代码:需要把项目中的main方法复制出来,创建一个pyodps3的节点,并做一些代码改造,详细的看下面这段代码的注释

'''PyODPS 3
请确保不要使用从 MaxCompute下载数据来处理。下载数据操作常包括Table/Instance的open_reader以及 DataFrame的to_pandas方法。 
推荐使用 PyODPS DataFrame(从 MaxCompute 表创建)和MaxCompute SQL来处理数据。
更详细的内容可以参考:https://help.aliyun.com/document_detail/90481.html
'''
# This is a sample Python script.
# Press ⌃R to execute it or replace it with your code.
# Press Double ⇧ to search everywhere for classes, files, tool windows, actions, and settings.
# 这里要引入odps,从odps读这个archive的zip包,即自己写的package
from odps import ODPS
o = ODPS('ak','sk','<project_name>')
# 这里通过get resource方法读到这个zip包
r = o.get_resource("dataworks_test01.zip")
import sys, zipfile
from odps.lib.importer import CompressImporter
# append到sys path中
sys.meta_path.append(CompressImporter(zipfile.ZipFile(r.open("rb"))))
# 这会引用的代码不需要方案1中的修改,zip文件解压后会保留这个文件的层级
from utils.local_vars import ali_name
from config.time_config import time_zone
def print_hi(name):
    # Use a breakpoint in the code line below to debug your script.
    print(f'Hi, {name}')  # Press ⌘F8 to toggle the breakpoint.
# Press the green button in the gutter to run the script.
if __name__ == '__main__':
    print_hi(ali_name + 'time zone is ' + time_zone)
# See PyCharm help at https://www.jetbrains.com/help/pycharm/

执行成功的结果见dataworks的那个页面。

2.3. 方案3

这个方案仅在打包的时候有所不同,如果客户除了自定义的package还借助了开源的package需要打包到zip里,可以参考下:https://pyodps.readthedocs.io/zh-cn/stable/pyodps-pack.html 用toml的方式指定,不过强烈建议客户使用独享资源组的运维助手通过pip直接安装开源包到资源组上。

除打包外其他操作过程同方案2

相关实践学习
基于Hologres轻量实时的高性能OLAP分析
本教程基于GitHub Archive公开数据集,通过DataWorks将GitHub中的项⽬、行为等20多种事件类型数据实时采集至Hologres进行分析,同时使用DataV内置模板,快速搭建实时可视化数据大屏,从开发者、项⽬、编程语⾔等多个维度了解GitHub实时数据变化情况。
相关文章
|
8月前
|
人工智能 Shell Python
ERROR: pip’s dependency resolver does not currently take into 报错-Python项目依赖冲突的解决方案-优雅草优雅草卓伊凡
ERROR: pip’s dependency resolver does not currently take into 报错-Python项目依赖冲突的解决方案-优雅草优雅草卓伊凡
333 0
|
8月前
|
异构计算 Python
ERROR: pip’s dependency resolver does not currently take into 报错-Python项目依赖冲突的解决方案-优雅草优雅草卓伊凡
ERROR: pip’s dependency resolver does not currently take into 报错-Python项目依赖冲突的解决方案-优雅草优雅草卓伊凡
677 1
|
8月前
|
缓存 监控 供应链
唯品会自定义 API 自定义操作深度分析及 Python 实现
唯品会开放平台提供丰富API,支持商品查询、订单管理、促销活动等电商全流程操作。基于OAuth 2.0认证机制,具备安全稳定的特点。通过组合调用基础接口,可实现数据聚合、流程自动化、监控预警及跨平台集成,广泛应用于供应链管理、数据分析和智能采购等领域。结合Python实现方案,可高效完成商品搜索、订单分析、库存监控等功能,提升电商运营效率。
|
8月前
|
缓存 监控 供应链
京东自定义 API 操作深度分析及 Python 实现
京东开放平台提供丰富API接口,支持商品、订单、库存等电商全链路场景。通过自定义API组合调用,可实现店铺管理、数据分析、竞品监控等功能,提升运营效率。本文详解其架构、Python实现与应用策略。
|
8月前
|
API 语音技术 开发者
Python 项目打包,并上传到 PyPI,分享项目
本文介绍了如何使用 Poetry 打包并发布一个 Python 项目至 PyPI。内容包括:项目创建、配置 `pyproject.toml` 文件、构建软件包、上传至 PyPI、安装与使用。通过实例 iGTTS 展示了从开发到发布的完整流程,帮助开发者快速分享自己的 Python 工具。
缓存 监控 供应链
269 0
缓存 监控 数据挖掘
195 0
|
Python Windows Linux
python 2.7 自定义 RPM 编译[备忘]
要求 把 python 2.7 进行编译 安装目标位置 可执行文件位置   /apps/svr/python27 其他库文件, 头文件, doc 安装位置  /apps/lib/python27 对应源码 python-2.7.5.tar.gz   参见  python-2.7_centOS5.8.spec 文件 %define _topdir %(echo `cd ..
1554 0
|
7月前
|
Python
Python编程:运算符详解
本文全面详解Python各类运算符,涵盖算术、比较、逻辑、赋值、位、身份、成员运算符及优先级规则,结合实例代码与运行结果,助你深入掌握Python运算符的使用方法与应用场景。
478 3

相关产品

  • 大数据开发治理平台 DataWorks
  • 推荐镜像

    更多