
HyperFinity 如何通过 Snowflake 的 Snowpark for Python 简化其无服务器架构
HyperFinity 是一个决策科学 SaaS 平台。 通过机器学习和人工智能、嵌入式分析和数据可视化,HyperFinity 使非技术用户能够做出数据驱动的决策并创建简单的输出,从而为下游系统(如 CRM、ERP 或内容管理系统)提供支持。 这使组织能够在多个领域快速做出机器学习驱动的决策,从更智能的供应链到优化的定价。
Snowflake 位于 HyperFinity 数据密集型平台的核心。 除了对半结构化数据的变体数据类型等广泛的数据类型支持外,Snowflake REST API 和零复制克隆等其他功能也是平台无服务器架构中的宝贵工具。 Snowflake 的安全数据共享还简化了 ELT 流程,并简化了 HyperFinity 平台及其输出与已在使用 Snowflake 的客户的集成。
挑战:针对不同编程语言的独立基础设施
虽然 HyperFinity 的平台旨在让非技术用户只需单击按钮即可轻松应用机器学习和人工智能,但所需的数据处理的所有功能均由以数据科学为中心团队开发,该团队的主要编码语言是 SQL 和 Python。 Snowflake 处理了我们所有的 SQL 开发和处理,但是为了为我们的 Python 代码构建无服务器计算引擎,我们的团队必须在 AWS 上设置一组新的云基础设施,这需要将多个计算服务(如 Amazon EC2 和 AWS Lambda)拼接在一起。 这有几个缺点,例如必须将数据移出 Snowflake 的治理边界进行处理、维护额外的基础设施以及编写额外的代码来处理服务之间变化的数据结构。
当我们看到 Snowpark 的 Python 支持 宣布 时,我们对它将为我们带来的可能性感到非常兴奋,并且我们很幸运能够参与到私人预览中。
通过 Snowpark for Python 简化我们的架构
Python 的优点之一是其丰富的开源软件包和库生态系统,我们广泛使用这些软件包和库。 例如,该平台的核心部分是为产品组创建“客户需求状态”。 这使用一种称为分层聚类的技术来创建客户决策树,该树表示个人为购买他们购买的产品所做的选择。 计算这些需求状态需要矩阵和数组乘法,我们的团队使用 Python 库 numpy 和 scipy 在 Snowpark 中利用这些库。 通过使用 Snowpark,这种类型的计算在 Snowflake 中更容易开发和实施。
以前用于 Python 处理的云基础设施已被简单的 Snowpark 代码取代
由于 Snowpark for Python 环境通过 Snowflake 与 Anaconda 的合作预装了 1,000 多个 库,因此我们可以轻松地以最小的努力移动现有函数。 拥有最常用的库消除了开发过程中的另一个管理层,并且通过集成的 conda 软件包管理器,无需担心依赖管理。 如果我们需要自定义库,Snowflake 支持上传和导入 自定义 Python 代码 的功能。
我们还能够以以前需要在多个工具之间来回发送数据的方式将 SQL 和 Python 逻辑混合在一起,并且我们的团队还能够通过并行处理来提高性能。 通过使用这种 SQL 和 Python 的混合,我们可以在 SQL 的多个行上并发运行用 Python 编写的逻辑,从而将以前的循环操作转变为并行进程。 例如,以五种不同深度运行我们的聚类解决方案与以一种深度运行所花费的时间相同。
“Snowpark 使我们能够在加速开发的同时降低与数据移动和为 SQL 和 Python 运行单独环境相关的成本。”
在 Snowflake 中作为 SQL 语句的一部分运行 Python 函数,包括并行处理
将我们的 Python 进程转移到 Snowpark 消除了我们架构中不必要的复杂性,并通过删除处理服务之间变化的数据结构的所有额外代码简化了我们的开发。 现在,我们的团队可以在存储数据的同一环境中开发、测试和部署他们的 Python 代码,从而利用 Snowflake 平台的强大功能,并使用他们首选的开发语言。
HyperFinity 是一款旨在通过强大的数据科学和高级分析技术简化决策的软件。 Snowflake,现在还有 Snowpark,是 HyperFinity 架构的主要组成部分,我们对 Snowflake 为软件带来的性能和稳定性以及 Snowflake 正在发布的新功能(使其使用起来更加强大)感到非常满意。
作为一家初创公司,在 Snowflake 之上构建我们的应用程序简化了我们的基础设施和开发过程,并加速了软件进入市场的道路。