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

本文涉及的产品
大数据开发治理平台DataWorks,资源组抵扣包 750CU*H
简介: 阿里云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实时数据变化情况。
相关文章
|
1月前
|
JavaScript 前端开发 机器人
【Azure Bot Service】在中国区Azure上部署机器人的 Python 版配置
本文介绍了在中国区Azure上使用Python SDK配置Azure Bot Service时遇到的问题及解决方案,涵盖参数设置与适配器配置,适用于希望在Azure中国区部署Python机器人的开发者。
|
4月前
|
人工智能 安全 Shell
Jupyter MCP服务器部署实战:AI模型与Python环境无缝集成教程
Jupyter MCP服务器基于模型上下文协议(MCP),实现大型语言模型与Jupyter环境的无缝集成。它通过标准化接口,让AI模型安全访问和操作Jupyter核心组件,如内核、文件系统和终端。本文深入解析其技术架构、功能特性及部署方法。MCP服务器解决了传统AI模型缺乏实时上下文感知的问题,支持代码执行、变量状态获取、文件管理等功能,提升编程效率。同时,严格的权限控制确保了安全性。作为智能化交互工具,Jupyter MCP为动态计算环境与AI模型之间搭建了高效桥梁。
290 2
Jupyter MCP服务器部署实战:AI模型与Python环境无缝集成教程
|
6月前
|
Docker Python 容器
Docker——阿里云服务器使用Docker部署python项目全程小记
本文记录了我在阿里云服务器上使用Docker部署python项目(flask为例)的全过程,在这里记录和分享一下,希望可以给大家提供一些参考。
611 2
|
6月前
|
缓存 Shell 开发工具
[oeasy]python071_我可以自己做一个模块吗_自定义模块_引入模块_import_diy
本文介绍了 Python 中模块的导入与自定义模块的创建。首先,我们回忆了模块的概念,即封装好功能的部件,并通过导入 `__hello__` 模块实现了输出 &quot;hello world!&quot; 的功能。接着,尝试创建并编辑自己的模块 `my_file.py`,引入 `time` 模块以获取当前时间,并在其中添加自定义输出。
91 5
|
8月前
|
数据挖掘 数据处理 开发者
Python3 自定义排序详解:方法与示例
Python的排序功能强大且灵活,主要通过`sorted()`函数和列表的`sort()`方法实现。两者均支持`key`参数自定义排序规则。本文详细介绍了基础排序、按字符串长度或元组元素排序、降序排序、多条件排序及使用`lambda`表达式和`functools.cmp_to_key`进行复杂排序。通过示例展示了如何对简单数据类型、字典、类对象及复杂数据结构(如列车信息)进行排序。掌握这些技巧可以显著提升数据处理能力,为编程提供更强大的支持。
278 10
|
10月前
|
Python
在Python中,自定义函数可以抛出自定义异常
在Python中,自定义函数可以抛出自定义异常
186 5
|
10月前
|
存储 开发者 Python
自定义Python的异常
自定义Python的异常
156 5
|
10月前
|
存储 JSON API
如何自定义Python环境变量?
如何自定义Python环境变量?
242 3
|
10月前
|
SQL DataWorks 关系型数据库
阿里云 DataWorks 正式支持 SelectDB & Apache Doris 数据源,实现 MySQL 整库实时同步
阿里云数据库 SelectDB 版是阿里云与飞轮科技联合基于 Apache Doris 内核打造的现代化数据仓库,支持大规模实时数据上的极速查询分析。通过实时、统一、弹性、开放的核心能力,能够为企业提供高性价比、简单易用、安全稳定、低成本的实时大数据分析支持。SelectDB 具备世界领先的实时分析能力,能够实现秒级的数据实时导入与同步,在宽表、复杂多表关联、高并发点查等不同场景下,提供超越一众国际知名的同类产品的优秀性能,多次登顶 ClickBench 全球数据库分析性能排行榜。
464 6
|
11月前
|
数据处理 Apache 数据库
将 Python UDF 部署到 Apache IoTDB 的详细步骤与注意事项
【10月更文挑战第21天】将 Python UDF 部署到 Apache IoTDB 中需要一系列的步骤和注意事项。通过仔细的准备、正确的部署和测试,你可以成功地将自定义的 Python UDF 应用到 Apache IoTDB 中,为数据处理和分析提供更灵活和强大的支持。在实际操作过程中,要根据具体情况进行调整和优化,以确保实现最佳的效果。还可以结合具体的代码示例和实际部署经验,进一步深入了解和掌握这一过程。
132 2

热门文章

最新文章

相关产品

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

    更多