Snowflake SnowPark Python -Clarifications



有几个关于SnowPark with Python的问题。

  1. 当我们已经有Snowflake python连接器(免费)可以使用Snowflake DW连接到python jupyter时,为什么我们需要Snowpark ?

  2. 如果我们使用snowpark并连接本地jupyter文件来运行ML模型。是使用我们本地机器的计算能力还是雪花的计算能力?如果这是我们本地机器的计算能力,我们如何使用雪花的计算能力来运行ml模型?

  1. 使用Python的Snowpark允许您像处理Spark DF一样处理雪花表。这意味着您可以在Snowflake表上运行pyspark代码,而无需从Snowflake中提取数据,并且计算是Snowflake计算,而不是您的本地机器,这是完全弹性的。
  2. 只要你在python中执行spark数据框架逻辑,计算就会在雪花端。如果您将该数据拉回您的机器以执行其他逻辑(例如pandas),那么Snowpark将将数据拉回您的本地机器,并且计算将在那里正常进行。

我建议从这里开始学习更多内容:

https://docs.snowflake.com/en/developer-guide/snowpark/index.html

有几件事要记住,我们在这里谈论的是很多事情,如果有一些澄清可能会更好。

Snowpark是一个通过pip/conda安装的库,它是一个数据框架库,这意味着您将能够定义一个指向Snowflake中的数据的数据框架对象(也可以使用它将数据获取到Snowflake中)。除非您显式地告诉它,否则它不会将数据回拉到客户端,并且所有的计算都在雪花端完成。

当您在Snowpark数据框架上执行操作时,您正在使用Python代码生成在Snowflake中执行的SQL,使用与您自己编写SQL相同的机制。生成的SQL的执行由.show()、.collect()、save_as_table()等操作方法触发。

更多信息在这里

作为Snowflake Python支持的一部分,还有Python udf和Python存储过程,您不需要Snowpark来创建或使用它们,因为您可以使用SQL使用create FUNCTION/create Stored PROCEDURE,但您也可以使用Snowpark。

使用Python udf和Python存储过程,您可以将Python代码带入Snowflake,这些代码将在Snowflake计算上执行,它不会被转换为SQL,但会使用运行在计算节点上的Python沙箱。

为了使用Python存储过程或Python udf,你不需要做任何事情,它就像Snowflake的任何其他内置功能一样。

关于Python udf和Python存储过程的更多信息。

Snowflake Python Connector允许您编写在Snowflake上执行的SQL,并且结果被拉回客户端在那里使用,使用客户端内存等。如果你想让你的操作在Snowflake中执行,你需要为它编写SQL。

使用现有的Snowflake Python Connector,您将Snowflake数据带到正在执行Python程序的系统中,将您限制在该系统的计算和内存中。使用Snowpark for Python,您可以将Python代码带到Snowflake,以利用云平台的计算和内存。

Snowpark python提供了Snowflake python连接器所没有的以下优点

  1. 用户可以将他们自定义的python客户端代码以UDF(用户定义函数)的形式带入Snowflake,并在Dataframe上使用这些函数。

它允许数据工程师,数据科学家和数据开发人员以他们熟悉的方式使用他们选择的语言进行编码,并在单个平台上更快,更安全地执行管道,ML工作流和数据应用程序。

  1. 用户可以使用熟悉的Dataframe api语法(Dataframe编程风格)构建/处理查询

  2. 用户可以使用所有流行的Anaconda的库,所有这些库都是预先安装的。用户可以从Anaconda的库中访问数百个精心策划的开源Python包。

  3. Snowpark操作在服务器上延迟执行,这减少了客户端和Snowflake数据库之间传输的数据量。

详细信息请参考

文档

我认为理解Snowpark是复杂的。我认为@Mats的回答非常好。我创建了一篇博客文章,我认为它提供了一些高层次的指导:https://www.mobilize.net/blog/lost-in-the-snowpark

相关内容

  • 没有找到相关文章

最新更新