【问题标题】:Snowflake SnowPark Python -ClarificationsSnowflake SnowPark Python - 说明
【发布时间】:2022-08-22 18:59:50
【问题描述】:

有几个关于使用 Python 的 SnowPark 的问题。

  1. 当我们已经拥有可以使用 Snowflake DW 连接到 Python jupyter 的 Snowflake python 连接器时,为什么还需要 Snowpark?

  2. 如果我们使用 snowpark 并连接本地 jupyter 文件来运行 ML 模型。是用我们的本地机器算力还是Snowflake算力?如果是我们本地机器算力怎么用Snowflake算力运行ml模型?

    标签: python-3.x snowflake-cloud-data-platform snowflake-connector


    【解决方案1】:
    1. 使用 Python 的 Snowpark 允许您将 Snowflake 表视为 Spark DF。这意味着您可以针对 Snowflake 表运行 pyspark 代码,而无需从 Snowflake 中提取数据,并且计算是 Snowflake 计算,而不是您的本地机器,它是完全弹性的。
    2. 只要您在 python 中执行 spark 数据帧逻辑,计算就会在 Snowflake 端。如果您将该数据拉回您的机器以执行其他逻辑(例如,熊猫),那么 Snowpark 会将数据拉回您的本地机器,并且计算将照常进行。

      我建议从这里开始了解更多信息:

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

    【讨论】:

    • 是否可以在 Snowflake SQL 代码中或仅在 Snowpark 会话中调用 UDF?
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

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

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

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

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

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

        更多详情请参考documentation

      【讨论】:

        【解决方案4】:

        需要记住的几件事是,我们在这里讨论了多件事,澄清一下可能会很好。

        Snowpark 是一个通过 pip/conda 安装的库,它是一个数据框库,这意味着您将能够定义一个指向 Snowflake 中数据的数据框对象(也可以使用它来将数据导入 Snowflake)。它不会将数据拉回客户端,除非您也明确告诉它,并且所有计算都在 Snowflake 端完成。

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

        更多信息here

        作为 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 UDFs 的更多信息和有关Python Stored Procedures 的信息。

        Snowflake Python 连接器允许您编写在 Snowflake 上执行的 SQL,并将结果拉回客户端以在那里使用,使用客户端内存等。如果您希望在 Snowflake 中执行您的操作,您需要编写 SQL为了它。

        【讨论】:

          猜你喜欢
          • 2022-06-18
          • 2022-07-07
          • 2022-07-25
          • 2023-01-27
          • 1970-01-01
          • 2015-12-02
          • 1970-01-01
          • 2022-10-05
          • 2015-10-10
          相关资源
          最近更新 更多