我正在使用Snowpark for Python。我想导入imblearn包,但是当我在https://repo.anaconda.com/pkgs/snowflake/上检查预安装包时,这个包没有安装在Snowpark蟒蛇环境中。如何在雪上公园使用这个包?
许多由Anaconda构建和提供的开源第三方Python包都可以在Snowflake中使用。
Snowflake不断添加新的包。但是如果你没有找到特定的包,那么
-
首先检查包是否只有本地python代码(纯python包),如果是,然后将包安装到本地,将其压缩并放入snowflake阶段,并在imports参数或add_import()方法中添加此阶段路径。这应该可以工作。
-
如果没有,我们所能做的就是等待它可用。
同样在snowflake中,您可以使用这个查询来获取有关包的详细信息:
select * from information_schema。语言= 'python';
我们已经做了同样的事情,但是对于shap
。
你需要在本地安装包和zip包。
pip install -t shap shap
cd shap
zip -r shap.zip shap/
然后将该zip文件复制到S3位置,您有一个Snowflake阶段。在下面的例子中,我们的阶段是PYTHON_PACKAGES
。
然后,使用add_import
来指导Snowpark使用它…
from snowflake.snowpark import Session
from snowflake.snowpark.types import StringType
session = Session.builder.configs(connection_parameters).create()
session.add_import("@PYTHON_PACKAGES/shap.zip")
session.add_packages("numpy", "pandas==1.3.5","scipy","scikit-learn", "numba", "slicer", "tqdm")
def test():
import shap
return shap.__version__
test_udf = session.udf.register(
name="TEST",
func=test,
replace=True,
return_type=StringType()
)
session.sql("select test()").show()
如果你想使用的包只有本地Python代码,那么你可能可以使用它。
最简单的方法是将软件包安装到本地环境中,然后对安装目录进行压缩,并在使用CREATE FUNCTION时使用IMPORTS参数添加压缩,或者在使用Snowpark API时使用add_import()方法。
我使用SnowSQL和Snowflake中的一个工作表来做到这一点