Python UDFs 故障排除

本主题提供有关 Python UDFs(用户定义函数)的故障排除信息。

本主题内容:

故障排除

问题:Anaconda 无法提供所需的 Python 库

没有 C/C++ 扩展的第三方 Python 库可以由 UDFs 直接通过 Snowflake 暂存区导入。有关更多信息,请参阅 使用从暂存区上传的代码创建 Python UDF

要了解如何提交支持其他 Anaconda 包的请求,请参阅 使用第三方包

问题:UDF 失败并显示错误“Function available memory exhausted”

减少 UDF 使用的内存量。

检查 UDF 代码是否存在错误或内存泄漏。

有关更多信息,请参阅 内存

问题:我想提取 UDF 中的 ZIP 或其他档案

要查看如何将 ZIP 文件上传到 Snowflake 暂存区并将其解压缩到 UDF 中的 /tmp 目录的示例,请参阅 解压缩暂存文件

问题:UDF 性能缓慢

有关如何提高 UDFs 的性能,请参阅 针对规模和性能进行优化

问题:ORGADMIN 角色未启用,因此无法使用 Anaconda 包

在完成 从 Anaconda 开始使用第三方包 的步骤时,需要组织管理员 (ORGADMIN) 角色。

要解决此问题,请按照 在账户中启用 ORGADMIN 角色 中的说明操作。

问题:读取文件时 UDF 失败并显示错误“UnicodeDecodeError”

使用 SnowflakeFile 类来读取包含非文本数据的文件时,必须指定输入模式为二进制。否则可能会遇到以下错误:

UnicodeDecodeError: 'utf-8' codec can't decode byte 0xf7 in position 12: invalid start byte
Copy

要解决此问题,请通过为 mode 实参(第二个实参)传递 'rb' 来将输入模式指定为二进制。例如:

with SnowflakeFile.open(file_name, 'rb') as f:
Copy

技巧

训练机器学习 (ML) 模型有时会非常耗费资源。Snowpark-Optimized Warehouses 是一种 Snowflake 虚拟仓库,可用于需要大量内存和计算资源的工作负载。有关机器学习模型和 Snowpark Python 的信息,请参阅 使用 Snowpark Python 训练机器学习模型

如果在 掩码策略 中使用 Python UDF,请确保列的数据类型、 UDF 和掩码策略匹配。

有关第三方包的故障排除信息,请参阅 第三方包的已知问题

语言: 中文