首页 > 编程问答 >将 python 脚本作为 AWS 胶水服务作业运行

将 python 脚本作为 AWS 胶水服务作业运行

时间:2024-07-31 15:33:58浏览次数:6  
标签:python amazon-web-services aws-glue

我有一个使用本地路径在本地运行的 python 脚本,但我需要复制此 python 脚本并将其作为 AWS 胶水服务作业运行并将输出保存在 s3 存储桶中。

请帮助我逐步说明。


将 Python 脚本作为 AWS Glue 作业运行的步骤如下:

步骤 1:修改的 Python 脚本以使其与 Glue 兼容

  • 导入必要的库: 确保的脚本导入了必要的库,例如 boto3 (用于与 AWS 服务交互)和任何其他特定于 Glue 的库(例如 awsglue )。
  • 处理命令行参数: Glue 作业可以使用 getResolvedOptions 函数从命令行传递参数。使用此函数从 Glue 作业配置中检索任何必要的参数。
  • 从 S3 加载数据(如果适用): 如果需要从 S3 加载数据,请使用 boto3 awsglue 库指定 S3 存储桶和对象键。
  • 将输出写入 S3: 修改的脚本以将输出写入指定的 S3 存储桶和对象键,而不是写入本地路径。再次使用 boto3 awsglue 与 S3 交互。

步骤 2:将的 Python 脚本和任何依赖项打包

  • 创建一个 .zip 文件: 创建一个包含的 Python 脚本和任何必要依赖项(库、配置文件等)的 .zip 文件。确保的脚本是 .zip 文件的顶级目录中。
  • 将 .zip 文件上传到 S3 存储桶: 将 .zip 文件上传到选择的 S3 存储桶。这将使 Glue 作业可以访问的脚本和依赖项。

步骤 3:使用 AWS Glue 控制台创建 Glue 作业

  1. 登录 AWS 管理控制台并导航到 Glue 服务。
  2. 在左侧导航窗格中,单击“作业”,然后单击“创建作业”。
  3. 在“作业属性”页面上,提供以下信息:
  4. 作业名称: 为的作业指定一个名称。
  5. IAM 角色: 选择一个 IAM 角色,该角色具有运行的 Glue 作业的必要权限(例如,对 S3 的读/写访问权限)。如果还没有角色,可以创建一个新角色。
  6. 作业类型: 选择“Spark”。
  7. Glue 版本: 选择适合脚本的 Glue 版本(例如,Spark 2.4,Spark 3.1)。
  8. 此作业运行的 IAM 角色: 选择一个 IAM 角色或创建一个新角色。
  9. 在“脚本”部分,选择“来自 Amazon S3 的 Python shell 脚本”。
  10. 在“Python 脚本 s3 路径”中,指定在步骤 2 中上传的 .zip 文件的 S3 路径。
  11. 在“函数”部分,指定的 Python 脚本的名称(不带 .py 扩展名)。
  12. 在“作业参数”部分,可以指定要传递给的 Python 脚本的任何命令行参数(可选)。
  13. 配置任何其他必要的作业属性,例如计划、并发、监控和标签。
  14. 查看并创建作业。

步骤 4:运行并监控的 Glue 作业

  • 创建作业后,可以从 Glue 控制台手动运行它或设置计划运行。
  • 监控作业运行以确保其成功完成。
  • 检查作业日志以获取有关作业执行的任何错误或警告的详细信息。

就是这样!通过执行这些步骤,可以将的 Python 脚本作为 AWS Glue 作业运行并将输出保存在 S3 存储桶中。

zh-TW: 將 Python 腳本作為 AWS Glue 作業執行的步驟如下:

步驟 1:修改的 Python 腳本以使其與 Glue 相容

  • 匯入必要的程式庫: 確保的腳本匯入了必要的程式庫,例如 boto3 (用於與 AWS 服務互動)和任何其他特定於 Glue 的程式庫(例如 awsglue )。
  • 處理命令列參數: Glue 作業可以使用 getResolvedOptions 函式從命令列傳遞參數。使用此函式從 Glue 作業配置中擷取任何必要的參數。
  • 從 S3 載入資料(如果適用): 如果需要從 S3 載入資料,請使用 boto3 awsglue 程式庫指定 S3 儲存貯體和物件金鑰。
  • 將輸出寫入 S3: 修改的腳本以將輸出寫入指定的 S3 儲存貯體和物件金鑰,而不是寫入本機路徑。再次使用 boto3 awsglue 與 S3 互動。

步驟 2:將的 Python 腳本和任何相依性打包

  • 建立一個 .zip 檔案: 建立一個包含的 Python 腳本和任何必要相依性(程式庫、設定檔等)的 .zip 檔案。確保的腳本是 .zip 檔案的頂級目錄中。
  • 將 .zip 檔案上傳到 S3 儲存貯體: 將 .zip 檔案上傳到選擇的 S3 儲存貯體。這將使 Glue 作業可以存取的腳本和相依性。

步驟 3:使用 AWS Glue 主控台建立 Glue 作業

  1. 登入 AWS 管理主控台並瀏覽至 Glue 服務。
  2. 在左側導覽窗格中,按一下「作業」,然後按一下「建立作業」。
  3. 在「作業屬性」頁面上,提供以下資訊:
  4. 作業名稱: 為的作業指定一個名稱。
  5. IAM 角色: 選擇一個 IAM 角色,該角色具有執行的 Glue 作業的必要權限(例如,對 S3 的讀取/寫入存取權限)。如果還沒有角色,可以建立一個新角色。
  6. 作業類型: 選擇「Spark」。
  7. Glue 版本: 選擇適合腳本的 Glue 版本(例如,Spark 2.4,Spark 3.1)。
  8. 此作業執行的 IAM 角色: 選擇一個 IAM 角色或建立一個新角色。
  9. 在「腳本」部分,選擇「來自 Amazon S3 的 Python shell 腳本」。
  10. 在「Python 腳本 s3 路徑」中,指定在步驟 2 中上傳的 .zip 檔案的 S3 路徑。
  11. 在「函式」部分,指定的 Python 腳本的名稱(不帶 .py 副檔名)。
  12. 在「作業參數」部分,可以指定要傳遞給的 Python 腳本的任何命令列參數(選用)。
  13. 設定任何其他必要的作業屬性,例如排程、並行、監控和標籤。
  14. 檢閱並建立作業。

步驟 4:執行並監控的 Glue 作業

  • 建立作業後,可以從 Glue 主控台手動執行它或設定排程執行。
  • 監控作業執行以確保其成功完成。
  • 檢查作業日誌以取得有關作業執行的任何錯誤或警告的詳細資訊。

就是這樣!透過執行這些步驟,可以將的 Python 腳本作為 AWS Glue 作業執行並將輸出儲存在 S3 儲存貯體中。

标签:python,amazon-web-services,aws-glue
From: 78810063

相关文章

  • Python - Decorating classes
    Whenwetalkaboutdecoratingclasses,wecaneitherdecorateindividualmethodsorwecancreateadecoratortodecoratethewholeclass.classMyClass:def__init__(self,a):self.a=a@timerdefmethod1(self,x,y):print......
  • 如何在 python 中使用矩阵分解从 3 个不同的矩阵(2 个交互矩阵和 1 个相似矩阵)创建一个
    我有3个不同大小的矩阵A、B、C,它们有一些共同的元素。A(相似性)与B(交互)有一些共同元素,但与C(第二交互矩阵)没有共同元素。B有一些与C相同的元素。我想创建一个基于B和C的矩阵M,但提供基于A、B、C的输出,就像推荐系统类型一样,其中根据评分、观看次数和偏好推荐电影。例......
  • Python - Decorators
    Adecoratorisacallablethattakesacallableasinputandreturnsacallable.Thisisthegeneraldefinitionofadecorator.Thecallableinthisdefinitioncanbeafunctionoraclass.Inourinitialdiscussion,wewilltalkaboutdecoratorfunctions......
  • Python捕获一组中的1000个项目进行处理
    我有一个包含数千条记录的大表(可能有3,000到75,000条记录),我将所有数字ID放入排序列表中。我想一次有序地处理一组1000个ID。我如何优雅地获取前1000个和“标签”,设置为“223344到337788”(字典在这里有意义吗,或者只是列表捕获中的第一个/最后一个项目......以跟......
  • 在 Python 中创建和/或检查编号变量的优雅方法
    我是一个试图学习Python的老家伙,所以我最后的编码经验是使用BASIC-不,不是VisualBasic。我理解一些与Python相关的概念,但我处于初级编码阶段,所以我使用“强力”逻辑编写了这个项目-基本上,将字符串分解为单个字母,然后用经典的“”测试每个字母猜单词类型的游戏。......
  • 使用法兰克福 API 和 Python 虚拟环境时出现 404 错误
    我正在VisualStudioCode中用Python制作货币转换器脚本,并且使用法兰克福API,它在几天前一直工作正常,直到现在每次我尝试获取API时都会收到404错误:|||输出:>response=requests.get(f"https://api.frankfurter.app/latest?amount={amount}&from={CF}&to={CT}")>......
  • 我的目标是检测车道并控制车辆保持在车道中央。使用Python
    我目前正在做一个项目,我是一个初学者。并且我需要找到一种方法来使用检测到的车道来控制我的项目车辆保持在两条线之间的中心。img1|||img2我有疑问的话题如下如何判断我的机器人车是否在车道中央?我们应该用什么方法来控制机器人的转向......
  • 【学习笔记】Matlab和python双语言的学习(主成分分析法)
    文章目录前言一、主成分分析法1.主成分分析法简介2.主成分分析法原理3.主成分分析法思想4.PCA的计算步骤二、代码实现----Matlab三、代码实现----python总结前言通过模型算法,熟练对Matlab和python的应用。学习视频链接:https://www.bilibili.com/video/BV1EK41187......
  • 如何使用python输入提示具有相同参数类型但不同返回类型的函数?
    我有一个函数,它的返回类型是tuple[bool,set[int]|str]如果第0项是True,则第1项是结果set[int],否则第1项是一个str,显示失败的原因。是这样的defcallee(para_a:int)->tuple[bool,set[int]|str]:result=set([1,2,3])if......
  • 彻底卸载Python
        前言通常我们在一些软件的使用上有碰壁,第一反应就是卸载重装。所以有小伙伴就问我Python怎么卸载才能彻底卸载干净,今天这篇文章,小编就来教大家如何彻底卸载Python 软件卸载方法1:首先,在安装python时,下载了一个可执行文件,也就是Python的安装包,我们双击它,点击uninstal......