2022 年 Snowpark Library for Scala and Java 版本说明

本文包含 Snowpark Library for ScalaSnowpark Library for Java 的版本说明,包括以下内容(如果适用):

  • 行为变更

  • 新功能

  • 面向客户的错误修复

Snowflake 对 Snowpark Library for Scala and Java 更新使用语义版本控制。

有关文档,请参阅 Snowpark Java 开发者指南Snowpark Scala 开发者指南

版本 1.6.2(2022 年 10 月 26 日)

兼容的 Snowflake 版本:6.35.x

改进

  • 对用 Java 或 Scala 编写的存储过程进行了内部改进。

版本 1.6.1(2022 年 9 月 30 日)

兼容的 Snowflake 版本:6.31.x

此版本存在一个已知问题,该问题可能会中断临时对象的创建。请改用 1.6.2。

改进

  • 对用 Java 或 Scala 编写的存储过程进行了内部改进。

版本 1.6.0(2022 年 8 月 12 日)

兼容的 Snowflake 版本:6.27.x

改进

  • 对 UDTFs 进行了内部改进。

版本 1.5.0(2022 年 7 月 1 日)

兼容的 Snowflake 版本:6.22.x

新功能

  • 添加了对 Scala APIJava API 将 DataFrames 写入暂存区上的文件的支持。

改进

  • 优化了 Snowpark 客户端库生成的 SQL 查询。

  • 改进了 Snowpark 库无法解析列名称时记录的错误消息

  • DataFrame(例如,当您尝试访问不存在的列时)。

版本 1.4.1(2022 年 5 月 26 日)

兼容的 Snowflake 版本:6.17.x

变更

  • 已将 Snowpark 库所依赖的 jackson-corejackson-annotations 的版本更新到 2.13.2。

  • 已将 Snowpark 库所依赖的 jackson-databind 版本更新到 2.13.2.2。

  • 从 Snowpark JAR 文件中删除了 jackson-corejackson-databindjackson-annotations 类。

    如果下载了 .tar.gz / .zip 文件,Jackson 类的 JAR 文件现在会在 lib/ 子目录(jackson-core-2.13.2.jarjackson-databind-2.13.2.2.jarjackson-annotations-2.13.2.jar)中分别提供。

    如果您在 pom.xml 文件中将 Snowpark 库指定为依赖项,并且想要依赖 pom.xml 文件中 不同版本 的 Jackson 库,则可以 从 Snowpark 库依赖项中排除对 Jackson 库的依赖项 (https://maven.apache.org/guides/introduction/introduction-to-optional-and-excludes-dependencies.html#dependency-exclusions)。

版本 1.4.0(2022 年 4 月 28 日)

兼容的 Snowflake 版本:6.14.x

新功能

  • Snowpark Java API 已在 AWS 和 Azure 上正式发布。

  • API 仍可作为 GCS 上的预览功能使用。

  • Snowpark Scala API 已在 Azure 上正式发布。

    在此版本之前, API 仅在 AWS 上正式发布。API 仍可作为 GCS 上的预览功能使用。

  • 添加了用于创建 UDTFs <label-snowpark_java_udtf>` 的 :ref:`Java API。请注意,这是一项预览功能。

  • ScalaJava 中添加了新的 APIs,用于从暂存区上传和下载数据 (FileOperation.uploadStream and FileOperation.downloadStream)。

  • ScalaJava 中添加了 DataFrameWriter.option 方法,用于指定如何将 DataFrame 中列中的值映射到表中的列。option 方法允许指定 DataFrameWriter 应使用列名,而不是列顺序。

改进

  • 在 Java 会话中禁用了 Closure Cleaner。Closure Cleaner 仅适用于 Scala 程序。

  • 改进了 Java Row API 中的 ArrayMap 支持。

版本 1.3.0(2022 年 3 月 18 日)

兼容的 Snowflake 版本:6.8.x

新功能

版本 1.2.0(2022 年 3 月 2 日)

兼容的 Snowflake 版本:6.5.x

新功能

  • 添加了 Snowpark 的 Java API

  • 在 Scala API 中添加了预览支持,用于 创建 UDTFs

  • 添加了符合 FIPS(联邦信息处理标准)安全要求的库的单独版本。您可以从以下位置下载此库:

    要从 sbt 构建文件或 Maven 项目指向符合 FIPS 的库,请使用 snowpark-fips 作为 artifactId

版本 1.1.0(2022 年 2 月 4 日)

兼容的 Snowflake 版本:6.2.x

添加了对 使用 Scala 编写存储过程 的支持。

Snowflake 文档 以及 Snowflake Client Repository <https://sfc-repo.snowflakecomputing.cn/snowpark/java/1.1.0/index.html>`_中的 :file:.zip` 或 .tar.gz 文件中提供此版本的 API 参考。

版本 1.0.0(2022 年 1 月 26 日)

兼容的 Snowflake 版本:6.1.x

(GA) 版本已在 AWS 上正式发布。(Snowpark 仍是 Azure 和 GCP 上的预览功能。)

Snowflake Client Repository <https://sfc-repo.snowflakecomputing.cn/snowpark/java/1.0.0/index.html>`_的 :file:.zip` 或 .tar.gz 文件中提供此版本的 API 参考。

版本 0.12.0(2022 年 1 月 4 日)

兼容的 Snowflake 版本:5.45.x

Snowflake Client Repository <https://sfc-repo.snowflakecomputing.cn/snowpark/java/0.12.0/index.html>`_的 :file:.zip` 或 .tar.gz 文件中提供此版本的 API 参考。

新功能

  • 已将 listagg 函数添加到 functions 对象中。

  • 添加了对包含 11 至 22 个实参的 UDFs 的支持。

  • any_value 函数添加到 RelationalGroupedDataFrame 类中。

改进

  • 在为 UDFs 生成的代码中,已将静态代码块替换为对象实例函数。

  • 重新组织了错误消息。

  • 更改了 saveAsTable 函数,以便不会在追加模式下创建新表。

  • 改进了 callUDF 函数以支持任何类型的实参。

  • 更改了库以在语句级别(而不是会话级别)设置查询标签。

版本 0.11.0(2021 年 11 月 16 日)

兼容的 Snowflake 版本:5.45.x

Snowflake Client Repository <https://sfc-repo.snowflakecomputing.cn/snowpark/java/0.11.0/index.html>`_的 :file:.zip` 或 .tar.gz 文件中提供此版本的 API 参考。

新功能

改进

已将 Snowflake JDBC 驱动程序升级到 3.13.9。改进了未选择使用当前数据库时报告的错误消息。

版本 0.10.1(2021 年 10 月 27 日)

兼容的 Snowflake 版本:5.38.x

Snowflake Client Repository <https://sfc-repo.snowflakecomputing.cn/snowpark/java/0.10.1/index.html>`_的 :file:.zip` 或 .tar.gz 文件中提供此版本的 API 参考。

错误修复

  • 修复了将文件上传到使用错误前缀的 GCP 暂存区的问题。

  • 修复了访问 GCP 的预签名 URL 时返回 403 HTTP 响应的问题。

版本 0.10.0(2021 年 10 月 18 日)

兼容的 Snowflake 版本:5.37.x

Snowflake Client Repository <https://sfc-repo.snowflakecomputing.cn/snowpark/java/0.10.0/index.html>`_的 :file:.zip` 或 .tar.gz 文件中提供此版本的 API 参考。

新功能

改进

行为变更

  • 从 Scala API 中删除了仅适用于 Java 的 APIs。

  • 使用 SLF4J SimpleLogger 替换了默认记录器 log4j。

错误修复

  • 更新了库以自动关闭未使用的语句,以减少内存使用量。

  • 修复了 DataFrame.withColumns 方法结果中的列顺序。

版本 0.9.0(2021 年 9 月 20 日)

兼容的 Snowflake 版本:5.34.x

Snowflake Client Repository <https://sfc-repo.snowflakecomputing.cn/snowpark/java/0.9.0/index.html>`_的 :file:.zip` 或 .tar.gz 文件中提供此版本的 API 参考。

新功能

行为变更

  • 更改了 DataFrame.union() 和 DataFrame.unionByName() 方法,以使用 UNION,而不是 UNION ALL。

错误修复

  • 修复了 Snowpark 库创建临时视图时可能发生的错误 SQL compilation error: Missing column specification

版本 0.8.0(2021 年 8 月 9 日)

兼容的 Snowflake 版本:5.30.x

Snowflake Client Repository <https://sfc-repo.snowflakecomputing.cn/snowpark/java/0.8.0/index.html>`_的 :file:.zip` 或 .tar.gz 文件中提供此版本的 API 参考。

改进

  • 重构了一些内部代码以删除一些依赖项。

错误修复

  • 修复了在标度可能大于精度的情况下与 BigDecimal 字面量相关的问题。

  • 修复了在执行多个集合操作(例如并集、相交等)时可能发生的问题。

版本 0.7.0(2021 年 7 月 23 日)

兼容的 Snowflake 版本:5.29.x

Snowflake Client Repository <https://sfc-repo.snowflakecomputing.cn/snowpark/java/0.7.0/index.html>`_的 :file:.zip` 或 .tar.gz 文件中提供此版本的 API 参考。

新 APIs

  • 推出了新的 Session.close() 方法。调用此方法可关闭 Snowpark 会话,这将取消所有正在运行的查询,并阻止后续使用此会话执行查询。

  • 推出了新的 Updatable 类。Updatable 扩展了 DataFrame 类,并提供了与表相关的其他功能(例如,更新和删除值的功能)。

  • Session.table() 方法现可返回一个 Updatable 对象,而不是一个 DataFrame 对象。

  • 为 UDFRegistration 类中的 registerTemporary 方法推出了新的签名。这些签名没有 UDF 名称的参数,这意味着您可以使用这些签名来注册匿名临时 UDF。

API 变更

  • 如上所述, Session.table() 方法现可返回一个 Updatable 对象,该对象可扩展 DataFrame

  • Geography 类中,删除了对 GeoJSON 以外格式的支持。现在, Geography 仅支持 GeoJSON 数据格式。

改进

  • 改进了 DataFrame.cacheResult() 方法,以减少出现“object already exists”错误的可能性。

  • 改进了一些错误消息。

  • 添加了一条新的日志消息,该消息会在您登录后打印出会话信息。

错误修复

  • 修复了 DataFrame.show() 方法无法正确显示二进制数据的问题。

  • 修复了获取版本号时发生的错误。

版本 0.6.0(2021 年 6 月 14 日)

兼容的 Snowflake 版本:5.21.x

AWS 上的预览版本

Snowflake Client Repository <https://sfc-repo.snowflakecomputing.cn/snowpark/java/0.6.0/index.html>`_的 :file:.zip` 或 .tar.gz 文件中提供此版本的 API 参考。

API 变更

在此版本中, RelationalGroupedDataFrame 中的以下方法现在需要实参:

  • avg

  • max

  • median

  • min

  • sum

在以前的版本中,如果在不带实参的情况下调用这些方法,则这些方法适用于 DataFrame 中的所有数字列。例如,对于包含列 (a int, b string, c float) 的 DataFrame df,调用 df.groupBy("a").max() 等效于调用 df.groupBy("a").max(col("a"), col("c"))

在此版本中,在不带实参的情况下调用这些方法会导致 SnowparkClientException

版本 0.5.0

新功能

  • 向 DataFrame.show() 方法添加了 maxWidth 参数。您可以使用此参数调整每列的输出中打印的字符数。

  • 添加了 Session.cancelAll() 方法,您可以使用该方法取消此会话上的所有正在运行的操作。

  • 添加了 DataFrame.toLocalIterator() 方法,该方法可返回一个可用于逐行检索数据的迭代器。如果您不想一次将所有数据加载到内存中,则可以使用此方法,而不是使用 DataFrame.collect()。

  • 将 median 方法添加到 RelationalGroupedDataFrame 类中。

改进

  • 改进了标识符无效时返回的错误消息。

  • 增强了错误检查,以便在未指定数据库或架构名称时报告错误。

  • 添加了在表中插入大量值时的性能改进。

  • 更新了库,以便一致地处理 Snowflake 对象标识符(表和视图名称)。现在,所有指定表或视图名称的参数都支持使用:

    • 简称(例如 table_name 和 view_name)

    • 完全限定名称(例如 database.schema.table_name)

    • 多部分标识符(例如 Seq("database", "schema", "view_name"))

  • 添加了检查以验证是否正在使用受支持的 Scala 版本。如果 Scala 版本不兼容,库将报告错误。

错误修复

  • 修复了在 Microsoft Windows 上注册 UDFs 的问题。

  • 修复了将 DataFrame.sort() 与 DataFrame.limit() 结合使用时出现的结果顺序相关问题。

  • 修复了 Session.range() 以生成没有间隙的数字序列。

版本 0.4.1

在此版本中,您不再需要为 Snowpark 对象指定临时架构或临时数据库( TEMP_SCHEMA 和 TEMP_DB 设置)。Snowpark 库会自动创建所需对象的临时版本。

API 变更

已将 DataFrame.cache() 方法替换为 DataFrame.cacheResult() 方法。

新方法可创建并返回包含缓存结果的新 DataFrame,并且对当前 DataFrame 没有影响。由于此更改, DataFrame 对象现在是不可变的。

新 APIs

  • 向 RelationalGroupedDataFrame 类中添加了以下新方法:

    • avg

    • max

  • 向 DataFrame 类中添加了以下新方法:

    • groupByGroupingSets

    • clone

    • createOrReplaceTempView

  • 向 functions 对象中添加了以下新函数:

    • toScalar

  • 添加了一个 Session.file 对象,该对象提供了以下用于执行文件操作的新方法:

    • get

    • put

  • 对 Session.createDataFrame 方法进行了以下更改:

    • 添加了对用户提供的架构的支持。

    • 添加了对指定 variant/geography 数据的数组/映射的支持。

    • 添加了对 UDFs 中的 Geography/Variant 数据类型的支持。

  • 向 UDFRegistration 类中添加了 registerPermanent 方法。

错误修复

  • 修复了 DataFrame 列名称包含引号时的问题。

  • 修复了无法转义包含反斜杠、单引号和换行符的数据的问题。

  • 修复了 UDF 创建失败并显示错误消息“code too larger”的问题。

  • 修复了 UDF 闭包无法获取本地字符串变量的值的问题。

  • 添加了以下 SQL 子句的结果架构:

    • GRANT/REVOKE

    • DESCRIBE

    • CREATE

    • USE

  • 修复了在带有 Metals 扩展的 Visual Studio Code 中使用 Snowpark 创建 UDF 时出现的问题。

语言: 中文