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
要解决此问题,请通过为 mode
实参(第二个实参)传递 'rb'
来将输入模式指定为二进制。例如:
with SnowflakeFile.open(file_name, 'rb') as f:
技巧¶
训练机器学习 (ML) 模型有时会非常耗费资源。Snowpark-Optimized Warehouses 是一种 Snowflake 虚拟仓库,可用于需要大量内存和计算资源的工作负载。有关机器学习模型和 Snowpark Python 的信息,请参阅 使用 Snowpark Python 训练机器学习模型。
如果在 掩码策略 中使用 Python UDF,请确保列的数据类型、 UDF 和掩码策略匹配。
有关第三方包的故障排除信息,请参阅 第三方包的已知问题。