简介
Snowpark 是 Snowflake 最近推出的一项重大创新,它提供了一套直观的库和运行时环境,用于在 Snowflake 中进行大规模的数据查询和处理。本章旨在引导您了解 Snowpark 的独特功能。此外,本章还将帮助您学习如何在 Snowpark 中使用 Python,并在数据工程、数据科学和数据应用等各种工作负载中实现它的应用。到本章结束时,您将掌握 Snowpark 的功能和优势,包括更快的数据处理、可扩展性和降低成本。
在本章中,我们将讨论以下主要内容:
- 介绍 Snowpark
- 利用 Python 进行 Snowpark 开发
- 了解 Snowpark 在不同工作负载中的应用
- 认识使用 Snowpark 的价值
介绍 Snowpark
Snowflake 成立于 2012 年,开始了数据云之旅,彻底重新构建了数据世界,重新思考了如何为云架构一个可靠、安全、高性能且可扩展的数据处理系统。它通过托管的软件即服务 (SaaS) 平台提供基于云的数据仓库服务,用于加载、分析和处理大量数据。Snowflake 的成功在于它是一种云原生的托管解决方案,构建在 Amazon Web Services、Microsoft Azure 和 Google Cloud Platform 等主要公共云提供商之上,自动为组织提供可靠、安全、高性能和可扩展的数据处理系统,而无需部署硬件或安装和配置任何软件。
与任何云数据仓库一样,Snowflake 支持作为首选语言的美国国家标准协会 (ANSI) SQL。尽管 SQL 是一种强大的声明性语言,允许用户对数据进行查询,但它局限于数据仓库工作负载,无法支持数据科学和数据工程等高级工作负载,这些工作负载需要开发人员使用其他编程语言编写解决方案,迫使他们将数据移出 Snowflake 进行这些工作。
Snowflake 为应对这一挑战推出了 Snowpark,这是一个创新的开发者框架,简化了构建复杂数据管道的过程。借助 Snowpark,数据科学家和开发人员可以使用他们喜欢的编程语言直接与 Snowflake 互动,快速安全地在 Snowflake 的虚拟计算仓库中部署机器学习 (ML) 模型、执行数据管道和开发数据应用,而无需将数据转移出 Snowflake。
Snowpark 通过原生支持 Python、Scala 或 Java 的 DataFrame 编程,提供深度集成的接口来增强 Snowflake 的原始 SQL 语言,减少了管理不同环境的复杂性,使数据团队能够更好地协作处理数据。这使得开发人员可以利用 Snowflake 的强大和可扩展的计算能力,在不导出数据到其他环境的情况下,将代码直接部署到数据上。
在本节中,我们简要介绍了 Snowpark,并了解了它如何融入 Snowflake 生态系统,以及它如何帮助开发人员。接下来的部分将介绍如何利用 Python 进行 Snowpark 开发。
利用 Python 进行 Snowpark 开发
2022 年 6 月,Snowflake 进行了重大发布,推出了备受期待的 Snowpark for Python。这一新发布的版本迅速成为 Snowpark 的首选编程语言,为用户提供了更多的在 Snowflake 中进行数据编程的选择。此外,Snowpark 简化了数据架构的管理,使用户能够更快、更高效地操作。
Snowpark for Python 是一个前沿的企业级开源创新,集成在 Snowflake 数据云中。因此,该平台为数据科学家和开发人员提供了无缝统一的体验。此外,Snowpark for Python 包基于 Snowflake Python 连接器构建。Python 连接器使用户能够在 Snowflake 中执行 SQL 命令和其他基本功能,而 Snowpark for Python 则赋予用户进行更高级数据应用的能力。
例如,该平台允许用户在 Snowflake 内直接运行用户定义函数 (UDF)、外部函数和存储过程。这一强大的新功能使数据科学家、工程师和开发人员能够在 Snowflake 内创建稳健且安全的数据管道和机器学习模型,从而利用平台的卓越性能、弹性和安全功能,提供先进的洞察力并推动有意义的业务成果。总体而言,Snowpark for Python 代表了 Snowflake 的重要进步,为用户提供了增强的功能和灵活性,同时保持了平台的卓越性能和安全特性。
Snowpark for Python 通过与 Anaconda 环境的集成支持预审的开源包,这些包在 Snowflake 的虚拟计算仓库中的 Anaconda 驱动的沙箱内执行,为开发人员提供了一个熟悉的界面。集成的 Anaconda 包管理器对开发人员非常有价值,因为它带有一整套精心策划的开源包,并支持解决不同包和版本之间的依赖关系。这极大地节省了时间,并帮助开发人员避免陷入“依赖地狱”。
Snowpark for Python 的功能
Snowpark for Python 已在 Snowflake 的所有云实例中普遍可用。它帮助加速各种工作负载,并带有一套丰富的功能,如下所示:
- 开发人员可以在 Snowflake 中编写 Python 代码,使他们能够直接在 Snowflake 中利用 Python 库和框架的强大功能。
- 它支持流行的开源 Python 库,如 pandas、NumPy、SciPy 和 scikit-learn,以及其他库,使开发人员能够直接在 Snowflake 内执行复杂的数据分析和机器学习任务。
- 它还提供对外部数据源的访问,如 AWS S3、Azure Blob 存储和 Google Cloud Storage,使开发人员能够处理存储在 Snowflake 之外的数据。
- 它与 Snowflake 的 SQL 引擎无缝集成,允许开发人员使用 Python 的函数式编程方法编写查询,并将其编译为 SQL。
- 它支持分布式处理,使开发人员能够扩展其 Python 代码,以处理大数据集和复杂的逻辑。
- 它使开发人员能够构建可以在 SQL 查询中使用的自定义 UDF,从而使数据处理工作流更加灵活和定制化。
- Snowpark 提供了一个 Snowflake 内的 Python 开发环境,允许开发人员直接在 Snowflake 用户界面中编写、测试和调试 Python 代码。
- 它允许开发人员处理各种数据格式,如 CSV、JSON、Parquet 和 Avro,从而提供数据处理和分析的灵活性。
- 它提供了一个统一的数据处理体验,使 SQL 和 Python 能在单一环境中协同工作。
- 它使开发人员能够使用 Python 代码创建自定义数据管道,从而更容易将 Snowflake 与其他数据源和数据处理工具集成。
- 它可以处理实时和批处理数据,使构建数据密集型工作负载变得更容易。
- 它提供了一个基于 Snowflake 构建的强大框架,确保数据隐私并符合行业标准,如健康保险可携性和责任法案 (HIPAA)、通用数据保护条例 (GDPR) 和安全运营中心 (SOC)。
- Snowpark 通过利用 Snowflake Marketplace 增强数据功能。
- Snowpark for Python 拥有许多功能,有助于开发人员在 Snowflake 中高效地处理各种工作负载和使用场景。
为什么选择 Python 进行 Snowpark 开发
尽管 Snowpark 支持 Python、Scala 和 Java,本书将重点介绍 Python,这是 Snowpark 开发的事实标准。Python 通过高层次的内置数据结构和动态类型绑定的不断普及,使其成为数据操作的理想选择。此外,该语言非常灵活且易于开发人员学习。它的强大之处在于丰富的开源生态系统,这个生态系统拥有不断增加的流行包列表。
Python 是一种通用的多功能编程语言,可用于数据工程、数据科学和数据应用等不同用途。它使开发人员能够学习一种编程语言来满足所有需求。
Snowflake 也在大量投资于 Python,以使数据科学家、工程师和应用开发人员能够在不牺牲治理的情况下,在数据云中构建更多的内容。
在本节中,我们介绍了 Snowpark for Python 的功能以及为什么 Python 是开发 Snowpark 的首选语言。接下来的部分将介绍如何使用 Snowpark 处理不同的工作负载。
了解 Snowpark 在不同工作负载中的应用
Snowpark 的发布将 Snowflake 转变为一个完整的数据平台,旨在支持各种工作负载。Snowpark 支持多种工作负载,如数据科学和机器学习(ML)、数据工程和数据应用。
数据科学和机器学习
Python 是数据科学家的首选语言。Snowpark for Python 支持流行的库和框架,如 pandas、NumPy 和 scikit-learn,使其成为数据科学家在 Snowflake 中进行机器学习开发的理想框架。此外,数据科学家可以使用 DataFrames API 直接与 Snowflake 中的数据交互,并在 Snowflake 中执行批量训练和推理。开发人员还可以使用 Snowpark 进行特征工程、机器学习模型推理和端到端的机器学习管道。Snowpark 还提供了一个 SnowparkML 库,以支持 Snowpark 中的数据科学和机器学习。
数据工程
数据清理和 ELT(提取、加载、转换)工作负载非常复杂,仅使用 SQL 构建数据管道可能非常困难,此时 Snowpark 可以带来巨大益处。Snowpark 允许开发人员编写具有可读性和可重用性的代码,同时提供更好的单元测试功能。此外,在 Anaconda 的支持下,开发人员可以使用开源 Python 库来构建可靠的数据管道。数据处理的另一个主要挑战是基础设施需要大量手动操作和维护。Snowpark 通过其高性能解决了这个问题,使数据工程师能够快速高效地处理大数据集,构建复杂的数据管道,并处理大量数据而不会出现性能问题。
数据治理和安全
Snowpark 支持开发包含数据治理和安全性的解决方案。数据治理对于增强数据科学和数据工程的使用案例至关重要。Snowpark 通过帮助组织了解和改善数据质量,简化了治理形势。开发人员可以快速创建函数来执行数据测试和检测异常。Snowpark 可以利用数据分类功能来检测个人身份信息(PII)并对组织关键数据进行分类。在 Snowpark 中开发的自定义函数可以使用强大的动态数据屏蔽功能屏蔽信用卡号码等敏感数据,同时保留 Snowflake 中现有的安全模型。
数据应用
Snowpark 帮助团队开发直接在 Snowflake 上运行的动态数据应用,而无需将数据移出。通过使用 Snowflake 收购的强大开源库 Streamlit,开发人员可以使用熟悉的 Python 环境构建本地应用。利用角色访问控制,开发人员可以在 Snowflake 的受治理平台上构建并安全地与用户共享互动的机器学习应用,充分利用其规模、性能和治理功能。Snowflake 原生应用框架提供了一条通过 Snowflake Marketplace 将应用货币化的简化路径,使您的应用可以向其他 Snowflake 客户提供,打开新的收入机会。
Snowpark 支持不同的工作负载,使 Snowflake 成为一个完整的数据云解决方案。下一部分将重点介绍 Snowpark 的技术和业务优势。
实现使用 Snowpark 的价值
传统的大数据方法在行业中已经存在很长时间,但它不适用于现代云端可扩展的工作负载。传统架构面临许多挑战,如下所示:
- 将计算和数据分离到独立的系统中
- 为不同的语言运行独立的处理集群
- 系统管理的复杂性
- 数据孤岛和数据重复
- 缺乏统一的安全和治理
Snowflake 通过使用 Snowpark 解决了传统系统的这些挑战,为数据生态系统和 Snowflake 用户提供了巨大的价值。
以下图示展示了传统方法与 Snowflake 简化方法之间的区别:
正如您从这两种方法的区别中看到的,Snowpark 的简化方法为企业和开发人员提供了一种灵活、高效且成本效益高的方式来构建与业务需求相适应的数据。使用 Snowpark 的一些显著价值如下:
- Snowpark 可以通过 DataFrame API 以编程方式访问数据,使数据摄取和集成保持一致,因为您可以集成各种结构化和非结构化数据。
- Snowpark 标准化了数据处理方法,因为数据管道是用 Python 代码编写的;这些代码可以测试和部署,更容易理解和解释。
- Snowpark for Python 由 Anaconda 提供支持,能够轻松访问开源的第三方 Python 库,从而增强数据处理能力,并使开发人员能够执行更多操作。
- Snowpark 无缝集成并运行在现有的 Snowflake 虚拟仓库上,允许开发人员构建设计用于扩展的数据应用程序,而无需额外的基础设施。
- Snowpark 的框架支持各种工作负载,如数据工程、数据科学和数据应用,为数据云上的开发提供了统一的体验。
- Snowpark 提供了一个安全、受治理的环境,因为它易于执行治理策略,且数据不会移动到 Snowflake 之外。