Snowflake Snowpark 面向开发人员

2025年8月2日 | 阅读 10 分钟

Snowflake 的 Snowpark:是什么?

Snowpark 是一系列在 Snowflake 中的库和运行时,允许您安全地部署和处理 Python、Java、Scala 等非 SQL 程序。客户端 Snowpark 库包括 DataFrame API 和用于模型构建(公开预览)和部署(私有预览)的原生 Snowpark 机器学习 (ML) API。

Snowpark 容器服务(私有预览)或数据仓库模型中的服务器端运行时包括 Python、Java 和 Scala 等。开发者可以通过利用存储过程 (sprocs) 和用户定义函数 (UDFs) 来导入和执行自定义逻辑。需要使用 GPU、专用运行时或库,或托管长时全栈程序的计算任务可以由 Snowpark 容器服务处理。

Snowflake Snowpark for Developers

为什么 Snowpark 很重要?

SQL 是一种非常强大的声明式语言,它允许所有技能水平的用户查询数据。然而,仅用 SQL 来理解大规模应用程序和管道的复杂逻辑可能会很困难。使用一个功能齐全的编程语言(如 Python、Scala 或 Java)的软件工程概念,可以大大简化复杂问题的解决。

Snowpark 使开发者能够利用 Snowflake 的计算能力并将代码推送到数据,而不是将数据导出到其他环境运行,其中大数据被视为二等公民。这可能是一个重大的优化。

Snowflake Snowpark for Developers

Snowpark 非常强大,因为它实现了

  • 自定义软件开发:团队现在可以使用 Snowpark API 的函数式编程模型来开发具有复杂逻辑的自定义应用程序。
  • 标准的 DevOps 和工程实践:通过使用将代码推送到 Snowflake 的 CI/CD 部署管道以及创建单元测试,开发者可以构建更可靠、可部署的应用程序。
  • 改进的合作伙伴集成:Snowpark 使合作伙伴能够构建与 Snowflake 更兼容的软件程序。像 Dataiku、DBT 和 Matillion 这样的程序可以将复杂计算推送到 Snowflake;团队可能已经在 Snowpark 中使用它们,甚至没有意识到。
  • 开源库:可以使用 Python、Java 和 Scala 开发丰富的开源软件,这些软件比 SQL 更通用。为了在 Snowflake 内部和外部处理数据,开发者可以使用 Snowpark 在 Snowflake 计算上大规模运行这些库。

Snowpark 适合谁?

虽然 Snowpark 很棒,但并非所有人都喜欢它。Snowflake 能够让用户通过 SQL(尤其是与 dbt 等工具结合使用时)完成惊人的事情,这是它最好的功能之一。然而,Snowflake 对某些工作负载非常有效。我们认为,这些任务可以分为三类:

数据科学和机器学习:Snowpark Python 是开发和实现机器学习的理想平台,因为数据科学家喜欢 Python。Snowpark UDFs 非常适合在 Snowflake 计算上进行批量训练和推理,数据科学家可以使用 Snowpark 的 DataFrame API 在 Snowflake 中处理数据。

大量数据的应用程序

一些团队会创建依赖数据的动态应用程序。借助 Snowpark,这些应用程序可以直接在 Snowflake 计算上运行。将 Snowpark 与 Snowflake 的原生应用程序和安全数据共享功能相结合,可以使企业以安全可控的方式处理客户数据。复杂的 डेटा 转换 SQL 有可能使某些数据清理和 ELT 任务变得更加困难。

Snowflake Snowpark for Developers

开发者可以使用函数式编程范式来因子化代码以提高可读性和可重用性,这还为单元测试提供了更好的框架。此外,开发者还可以选择导入第三方、开源或内部开发者的外部库。Snowpark Python 可以在不将数据传输到外部环境的情况下,在 Snowflake 计算上运行所有这些精心设计的代码。

为什么我们对 Snowpark 感到兴奋?

自 2015 年公司成立以来,phData 一直致力于数据工程。到目前为止,我们不得不将它们视为独立的实体。我们目睹了客户使用 Spark、Java、Scala 和 Python 来转换他们的数据工程和机器学习应用程序,以及使用 Snowflake 来转换他们的数据分析。

Snowflake Snowpark for Developers

我们设想通过在 Snowflake 虚拟数据仓库中提供原生数据工程功能,围绕 Snowflake 构建一个蓬勃发展的数据生态系统。Snowpark 的发布通过将他们的数据湖集成到一个全面的数据平台来简化我们客户的生活。虽然 Snowflake 使我们的客户能够普及他们的数据,但他们仍然只能利用 SQL 语言的功能。无论是使用 DataFrames 还是其他已有的工具和运行时,Snowpark 都将提供与 Snowflake 中数据的原生集成。

Snowpark 可以解决哪些潜在问题?

在扩展规模上创建和管理工作负载六年之后,我们得出结论,将开发资源部署到大数据集上存在一些潜在问题:

  • 分布式资源的启动时间长
  • Hadoop 或 Spark 等系统需要节点集群才能运行。在大多数平台上,可能需要五到十分钟才能执行任何代码。
  • Snowpark 将通过利用 Snowflake 易于访问的虚拟数据仓库来解决这个问题。

针对数据集的有效编码技术

向开发者授予访问权限可能会导致学习曲线,需要掌握优化最佳实践;这对于大数据集尤其重要。由于 Snowpark 提供了一个单一的访问数据层并提供了 DataFrame API,因此它们正在直接解决这个问题。这消除了直接文件访问的需要,也消除了对小文件等问题的担忧。

管理和解决垃圾回收和分区问题

对于 Hadoop 或其他基于文件的湖,这是最常见的问题,通常也是最难解决的问题。总的来说,需要对数据倾斜以及代码如何在计算节点上运行有更深入的理解才能进行故障排除。

phData 的 Snowpark 项目是什么?

作为 Snowpark 加速合作伙伴,我们已经与 Snowpark 合作了一段时间。以下是我们完成的一些项目的简要概述:

ML 推理管道

我们的一位客户遇到了一个耗时超过 20 小时的 ML 推理管道。大部分时间都花在将 Snowflake 的一个包含 250 万条记录的大型数据集导出到 Kubernetes 环境中进行处理。模型本身非常适合 Snowpark Python,因为它是在 Python 中训练的。

数据密集型匹配应用程序

我们的另一位客户使用 Map-Reduce 创建了一个复杂的匹配应用程序,这需要复杂的基础设施。此外,该应用程序旨在处理敏感的客户数据,这导致在安全隔离地维护此类数据方面存在巨大的开销。

Snowflake Snowpark for Developers

我们将该应用程序迁移到了 Snowflake 平台,因为 Snowpark 提供了完全在 Snowflake 平台内运行的便利性。该应用程序现在可以随着用户需求的增长而在 Snowflake 计算上扩展。最重要的是,通过 phData 的实现,我们的客户可以在不将数据摄入他们环境的情况下处理客户数据,从而实现数据共享和数据干净房。

用户可以运行查询并从 Snowflake 中提取数据,而无需拉取数据,因为 Snowpark 平台能够让开发者使用他们喜欢的编程语言 Python、Java 或 Scala。它提供了一个高级接口来处理数据,从而更容易创建需要数据处理的数据管道和应用程序。

这意味着开发者可以利用他们现有的知识和资源来创建与 Snowflake 通信的代码。此外,Snowpark 还提供了一个丰富的 API 集合,用于与 Snowflake 的数据平台集成,从而方便处理复杂的数据结构和查询结果。

Snowflake Snowpark for Developers

为什么要使用 Snowpark?

开发者可能会出于多种原因选择使用 Snowpark 而不是传统的 SQL 查询。首先,Snowpark 提供了比 SQL 更高级别的抽象,这使得处理复杂的数据结构和以传统 SQL 查询难以或不可能的方式转换数据变得更加容易。其次,Snowpark 允许开发者使用他们选择的编程语言,这可能会导致更高效、更出色的代码。

最后,Snowpark 提供了更灵活的数据处理方法。开发者可以使用 Snowpark 编写与 Snowflake 数据平台交互的代码,这是传统 SQL 查询无法实现的。例如,用户可以使用机器学习库对 Snowflake 数据进行预测性分析,或使用图表库来探索不同数据点之间的关系。

Snowflake Snowpark for Developers

在 Snowpark 中使用 Snowflake

Snowpark 的主要用例包括:

数据转换:使用熟悉的编程语言,Snowpark 可用于修改存储在 Snowflake 中的数据。这可能包括数据聚合、数据规范化和数据清理等活动。数据处理和分析中的一项关键任务是工程职能,它要求将非结构化数据转换为可用于机器学习和数据建模任务的实用函数。机器学习模型需要工程才能产生准确实用的预测。

对于特征工程任务,Snowpark 提供了一个强大的工具集,使开发者能够轻松修改和更改存储在 Snowflake 中的数据。

  • 机器学习:Snowpark 为机器学习活动(如数据建模和预测)提供了各种库。
  • 数据集成:Snowpark 通过将来自不同源的数据集成到 Snowflake 中,实现了跨多个平台的统一数据视图。
  • 实时分析:Snowpipe 流式传输使 Snowpark 能够对存储在 Snowflake 中的数据运行实时分析。这可能包括事件处理、流数据处理以及近乎实时的可视化等活动。

如何将 Snowflake 与 Snowpark 一起使用?

可以通过像 VS Code、IntelliJ 或 Snowsight 这样的 IDE 以多种方式连接 Snowpark 和 Snowflake。现在,您可以使用 Python 工作表,它们目前对我们所有客户都可用(公开预览)。要在 Snowsight 中使用 Snowpark Python 处理数据,请在 Python 工作簿中编写 Snowpark 代码。通过在 Python 工作表中编写代码,您可以在不安装任何依赖项的情况下使用 Snowflake 进行开发和测试。

登录 Snowflake 后,在工作表下选择新的 Python 工作表。创建新的 Python 笔记本时,可以编写一个简单的 Python 脚本来验证已安装的包和库。首先,定义您的会话并导入 Snowpark 库。然后,可以检索 information_schema.packages 表并将其存储在数据帧中,最后显示结果。

Snowflake Snowpark for Developers

无论您选择哪种方法,如果您想连接,都需要提供您的 Snowflake 帐户详细信息。登录到您的 Snowflake 帐户后,您就可以开始使用您喜欢的 IDE 处理 Snowpark 数据。要使用 Snowpark 和 Snowflake,开发者需要能够访问云数据平台 Snowflake。

这是一个使用 Snowpark 从 Snowflake 中提取数据的简单示例:

在此示例中,我们首先导入所需的 Snowpark 库。接下来,我们使用一个包含 Snowflake 帐户连接信息的配置文件来创建一个 Snowpark 会话。最后,我们使用 SQL 查询从 Snowflake 表中检索数据,并使用 show() 方法来演示结果。

Snowflake Snowpark for Developers

Snowflake Snowpark:为什么?

Snowflake Snowpark 是一系列框架和运行时,它允许您使用 Python、Java 和 Scala 等编程语言安全地在 Snowflake 的云平台上处理数据。

这消除了将数据传输到 Snowflake 外部进行处理的需求,从而提高了效率和安全性。以下是它的一些主要优势:

  • 使用您选择的语言编写代码并在 Snowflake 的一个受保护环境中运行,以分析和修改 Snowflake 上的 SQL 数据库。因此,不再需要将数据移动到不同的环境。
  • 增强的性能:Snowpark 可以利用该平台的弹性无服务器架构进行高效处理,直接在 Snowflake 中处理数据。
  • 降低成本和技术开销:您不必管理多个计算和存储平台,因为 Snowflake 主要提供资源。
    Snowflake Snowpark for Developers
  • 随时随地使用您所知的工具:借助 Snowpark 的 API,您可以从任何环境(包括 Jupyter 或 VSCode)连接到 SQL 数据库,从而创建数据管道和机器学习应用程序。最棒的是,您可以将 Snowpark 框架与您喜欢的库(如 Pandas、Scikit-learn、XGBoost 等)结合使用。

Snowpark 是一个强大而用户友好的工具,它使开发者能够将数据管道、机器学习解决方案和数据驱动型应用程序构建到 Snowflake Cloud 中。在传统的机器学习中,数据被从数据库移到模型。考虑到当今数据集的规模和 AI 的近期爆炸式增长,这种方法变得越来越不可行。

Snowflake Snowpark for Developers

需要从数据库移动 TB 级别的数据到客户端应用程序进行清理、分析和模型训练。这种看似无害的双向迁移是浪费金钱。为了减少数据移动并确保无缝的数据操作,越来越多的企业正在选择数据库内技术。Snowflake Cloud 的 Snowpark 是目前领先的数据库内技术之一。

结论

借助 Snowpark,一个强大的新工具,开发者可以使用熟悉的编程语言释放数据的潜力。Snowpark 简化了创建需要数据处理的数据管道和应用程序的创建过程。Snowpark 使开发者能够使用他们现有的工具和专业知识与 Snowflake 的数据平台进行交互,从而简化并提高大规模数据处理的效率。如果您想提升您在数据处理方面的技能,Snowpark 绝对值得探索。


下一主题