开发者社区 > 大数据与机器学习 > 大数据开发治理DataWorks > 正文

DataWorkspyodps3,引入外部资源包,报错怎么办?

DataWorkspyodps3,引入外部资源包,报错?SystemError: We do not allow file-type resource for binary packages. Please upload an archive-typed resource instead.image.png
哪位大佬能帮看看呢?用opds pack 打包了oss2的tar包,上传后用上图方式引用,报错

展开
收起
真的很搞笑 2024-07-09 13:42:29 63 0
11 条回答
写回答
取消 提交回答
  • DataWorks通常要求外部资源包以归档类型(如zip、tar.gz等)上传,而不支持直接上传文件类型的资源包。
    检查你的资源包是否已经被打包成zip或tar.gz等格式。image.png

    2024-08-24 21:02:29
    赞同 展开评论 打赏
  • 这个错误是因为您上传的资源包是一个文件类型的资源,而不是归档类型的资源。在DataWorks中,您需要上传归档类型的资源包,例如ZIP、JAR等。

    您可以尝试将您的资源包打包成ZIP或JAR格式,然后上传到DataWorks中。如果您的资源包是一个Python包,您可以尝试使用以下命令将其打包成ZIP格式:

    zip -r your_package.zip your_package/
    

    然后,将打包后的资源包上传到DataWorks中,并在代码中使用以下语句引用:

    导入资源包

    resource = Resource()
    resource.add_file("/path/to/your_package.zip")
    

    这样,您的代码就可以正常运行了。

    2024-08-24 19:17:55
    赞同 展开评论 打赏
  • 北京阿里云ACE会长

    上传归档类型的资源包(如tar.gz格式)来替代
    确保您的第三方包已经正确打包成归档类型,通常是.tar.gz格式。

    正确的引用方式应类似于:

    ##@resource_reference{"packages.tar.gz"}
    

    在代码中,使用load resource命令加载已上传的归档资源包,

    load resource package("packages.tar.gz")

    参考;
    https://help.aliyun.com/zh/dataworks/user-guide/use-a-pyodps-node-to-reference-a-third-party-package?spm=a2c4g.102667.0.0.34c744b3TwiIB0&scm=20140722.S_help@@%E6%96%87%E6%A1%A3@@94159@@10.S_llmOS0.ID_1077543-RL_DataWorkspyodps%E5%BC%95%E5%85%A5%E5%A4%96%E9%83%A8%E8%B5%84%E6%BA%90%E5%8C%85%E6%8A%A5%E9%94%99file~DAS-LOC_chat~DAS~llm-OR_ser-V_3-P0_0

    image.png

    2024-08-22 10:40:26
    赞同 展开评论 打赏
  • 在DataWorkspyodps3中引入外部资源包时遇到报错,通常是由于资源包格式不正确、资源包未正确上传或引用方式有误等原因造成的。针对这一问题,可以按照以下步骤进行排查和解决:

    一、检查资源包格式
    确认格式要求:
    DataWorks通常要求外部资源包以归档类型(如zip、tar.gz等)上传,而不支持直接上传文件类型的资源包。
    检查你的资源包是否已经被打包成zip或tar.gz等格式。
    重新打包:
    如果资源包尚未打包,请使用压缩工具(如WinRAR、7-Zip等)将其打包成zip或tar.gz格式。
    确保在打包过程中没有遗漏任何必要的文件或目录。
    二、上传资源包
    登录DataWorks:
    登录到DataWorks控制台,选择相应的工作空间。
    上传资源包:
    在DataWorks中,找到资源管理的入口,通常位于“数据管理”或“资源中心”等模块下。
    点击“上传资源”按钮,选择已经打包好的资源包文件进行上传。
    验证上传:
    上传完成后,检查资源包是否已经成功出现在资源列表中,并且状态为“已上传”。
    三、引用资源包
    编写代码:
    在PyODPS节点或其他需要引用外部资源包的节点中,编写相应的代码来引用资源包。
    如果DataWorks提供了特定的函数或方法来加载资源包(如load_resource_package),请确保按照文档说明正确使用该函数或方法。
    检查引用方式:
    确保资源包的引用路径和名称正确无误。
    如果资源包中包含多个文件或目录,并且你的代码需要访问这些文件或目录,请确保使用正确的相对路径或绝对路径进行访问。
    四、调试与排错
    查看错误日志:
    如果在引用资源包时遇到报错,请仔细查看DataWorks的错误日志或任务执行日志,以获取详细的错误信息。
    根据错误信息排查:
    根据错误日志中的信息,定位问题所在。可能的问题包括但不限于资源包格式错误、资源包未正确上传、引用方式有误等。
    修改并重新测试:
    根据排查结果修改代码或资源包,并重新进行测试以验证问题是否已解决。
    五、联系技术支持
    如果经过上述步骤仍然无法解决问题,建议联系DataWorks的技术支持团队或访问阿里云开发者社区等论坛寻求帮助。在联系技术支持时,请提供详细的错误信息和操作步骤,以便技术支持团队能够更快地定位并解决问题。

    请注意,由于DataWorks的具体操作界面和功能可能会随着版本更新而发生变化,因此建议参考最新的DataWorks官方文档或用户指南进行操作。

    2024-08-15 23:03:30
    赞同 展开评论 打赏
  • 在DataWorks中使用PyODPS时,如果您遇到错误提示SystemError: We do not allow file-type resource for binary packages. Please upload an archive-typed resource instead.,这意味着您尝试以文件类型(file)资源上传了应为归档类型(archive)的二进制包。根据错误提示和提供的参考资料,解决此问题的步骤如下:

    1. 打包第三方库

      • 确保您的第三方库及相关依赖已经正确打包成一个归档文件,如packages.tar.gz。这应该是一个包含了所有依赖的tar或zip格式的压缩包
    2. 上传归档类型资源

      • 通过代码上传
        • 使用Python SDK(ODPS)上传打包好的归档文件至MaxCompute。确保替换packages.tar.gz为您的实际文件路径,并正确设置访问密钥、项目名和端点。
    import os
         from odps import ODPS
    
         o = ODPS(
             os.getenv('ALIBABA_CLOUD_ACCESS_KEY_ID'),
             os.getenv('ALIBABA_CLOUD_ACCESS_KEY_SECRET'),
             project='<your-default-project>',
             endpoint='<your-end-point>'
         )
         o.create_resource("packages.tar.gz", "archive", fileobj=open("packages.tar.gz", "rb"))
    
    • 通过DataWorks上传
      • 在DataWorks界面,选择创建“Archive”类型的资源,然后上传您的packages.tar.gz文件。具体操作可参考DataWorks的官方文档关于“创建并使用MaxCompute资源”的部分
    1. 引用归档资源
      • 在您的PyODPS代码中,通过全局配置或方法调用的libraries参数指定已上传的归档资源名称,确保与上传时的资源名称一致。

    通过以上步骤,您应能成功解决不允许使用文件类型资源加载二进制包的问题,确保您的PyODPS任务可以正确引用外部资源包。

    2024-08-14 19:02:19
    赞同 展开评论 打赏
  • 您正在尝试在DataWorks中使用PyODPS来加载名为"packages.tar.gz"的外部资源包。根据提供的代码和错误消息,似乎您试图导入的是一个文件类型的资源,而不是归档类型(如tar或zip)的资源。系统不允许直接加载这种类型的资源到PyODPS项目中。为了解决这个问题您可以考虑以下步骤:
    转换资源:如果您有多个需要一起使用的Python包,可以将它们打包成一个压缩文件,例如tar.gz或zip。
    正确引用:确保您引用的资源是一个有效的归档文件,而不是单个文件。在这个例子中,load_resource_package("packages.tar.gz")应该指向一个正确的归档文件。
    重新上传资源:一旦您有了一个合适的归档文件,您需要将其重新上传到DataWorks作为资源。
    更新代码:最后,在您的代码中,确保您引用了新上传的归档资源。
    image.png

    2024-08-14 14:35:51
    赞同 展开评论 打赏
  • 技术浪潮涌向前,学习脚步永绵绵。

    在DataWorks中使用PyODPS时,如果需要引入外部资源包(例如第三方Python库),有时会出现各种类型的错误。这里有一些常见的原因及解决方法:
    1111.png

    1. 确认资源已正确上传

    • 资源管理:
      • 确认第三方包已经通过pyodps-pack工具打包,并且上传到了DataWorks中。
      • 在DataWorks中,进入“资源管理”页面,确保包已成功上传。

    2. 检查资源名称

    • 资源名称:
      • 确认在PyODPS脚本中引用的资源名称与DataWorks中上传的资源名称一致。
      • 检查资源名称拼写是否正确。

    3. 检查包的大小

    • 包大小限制:
      • 确认第三方包的大小不超过100MB的限制。
      • 如果包太大,考虑使用轻量级的替代包,或者只安装所需的模块。

    4. 检查依赖关系

    • 检查依赖树:
      • 使用pipdeptreepip show命令检查第三方包及其依赖项。
      • 确保没有不必要的依赖,只安装必需的包。

    5. 检查导入路径

    • 检查导入语句:
      • 确保在PyODPS脚本中正确导入了第三方包。
      • 如果包中有多个模块,确保导入正确的模块。

    6. 使用DataWorks参数

    • 正确传递参数:
      • 如果在PyODPS脚本中使用了DataWorks参数,确保参数传递正确且类型匹配。
      • 检查参数名称和数据类型是否与DataWorks中定义的一致。

    7. 检查日志

    • 查看错误日志:
      • 查看DataWorks中的日志,特别是PyODPS脚本的执行日志。
      • 错误日志通常会提供有关错误的具体信息。

    8. 检查Python版本兼容性

    • 确认版本兼容性:
      • 确认第三方包与你正在使用的Python版本兼容。
      • 检查第三方包的文档或使用pip show <package>命令查看兼容性信息。

    9. 使用虚拟环境

    • 创建虚拟环境:
      • 使用venvvirtualenv创建一个轻量级的虚拟环境。
      • 只安装必要的第三方包,避免安装不必要的依赖。
      • 使用pyodps-pack工具打包虚拟环境中的依赖包。

    10. 检查资源管理

    • 资源管理:
      • 在DataWorks的“资源管理”页面中,确认已正确配置并上传了第三方包。
      • 确认PyODPS脚本中引用了正确的资源名称。

    示例

    假设你在PyODPS脚本中需要使用pandas包,但遇到了导入错误。你可以按照以下步骤来解决这个问题:

    1. 创建虚拟环境:

      python3 -m venv myenv
      source myenv/bin/activate
      
    2. 安装必要的包:

      pip install pandas
      
    3. 使用pyodps-pack打包:

      pyodps-pack requirements.txt
      
    4. 上传资源到DataWorks:

      • 在DataWorks中,进入“资源管理”页面,上传打包后的文件。
    5. 在PyODPS脚本中引用资源:

      from odps import ODPS
      import pandas as pd
      
      # 获取ODPS客户端实例
      o = ODPS(get_cache('project'), get_cache('access_id'), get_cache('secret_access_key'), get_cache('end_point'))
      
      def main():
          # 加载资源
          pd = get_resource('pandas')
          # 使用pandas进行数据处理
          ...
      
      if __name__ == '__main__':
          main()
      

    注意事项

    • 确保在DataWorks中引用资源时使用正确的资源名称。
    • 如果使用了多个第三方包,确保每个包都已正确打包并上传。

    如果你能提供具体的错误信息或遇到的具体问题,我可以给出更加针对性的建议。

    2024-08-13 14:23:50
    赞同 展开评论 打赏
  • 阿里云大降价~

    是因为在DataWorks中尝试以file类型资源引用二进制包时受到了限制。MaxCompute要求对于包含二进制文件的包(如wheel格式的Python包),应上传为archive类型资源而非file类型
    。你虽然已经使用pyodps-pack打包了oss2为tar包,但是上传时可能没有正确地选择或指定为archive类型资源。

    2024-08-12 18:55:36
    赞同 展开评论 打赏
  • 报错信息SystemError: We do not allow file-type resource for binary packages. Please upload an archive-typed resource instead.表明你尝试引入的资源包类型不正确。DataWorks要求使用归档类型的资源包(如.tar.gz或.zip),而不是单个文件类型的资源。
    确保你上传到DataWorks的资源包是归档类型的。如果你上传的是一个.whl文件,你可能需要将其转换为.zip文件并重新上传

    2024-08-12 18:46:30
    赞同 展开评论 打赏
  • 根据报错不允许上传二进制软件包,需要上传一个归档文件,比如比如.tar.gz或.zip格式。

    确保你的 allinone.tar.gz 文件没有损坏,并且确实是一个有效的 tar.gz 归档文件。你可以尝试在本地使用 tar -tzf allinone.tar.gz 命令来查看归档内容,确认其是否包含你需要的文件和目录。

    命令参考如下:
    image.png

    2024-08-12 07:58:00
    赞同 1 展开评论 打赏
  • 在DataWorks中,不允许使用文件类型的资源包。你需要将资源包上传为归档类型(archive-typed resource)。
    将你的资源包(例如Python库)打包成一个zip或tar.gz格式的归档文件。

    image.png
    参考文档https://help.aliyun.com/zh/dataworks/user-guide/use-a-pyodps-node-to-reference-a-third-party-package?spm=a2c4g.11186623.0.i4#45cf9fa89214i

    2024-08-10 11:19:15
    赞同 展开评论 打赏
滑动查看更多

DataWorks基于MaxCompute/Hologres/EMR/CDP等大数据引擎,为数据仓库/数据湖/湖仓一体等解决方案提供统一的全链路大数据开发治理平台。

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载