2022 年 Snowpark Library for Scala and Java 版本说明¶
本文包含 Snowpark Library for Scala 和 Snowpark 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
新功能¶
改进¶
优化了 Snowpark 客户端库生成的 SQL 查询。
改进了 Snowpark 库无法解析列名称时记录的错误消息
DataFrame(例如,当您尝试访问不存在的列时)。
版本 1.4.1(2022 年 5 月 26 日)¶
兼容的 Snowflake 版本:6.17.x
变更¶
已将 Snowpark 库所依赖的
jackson-core
和jackson-annotations
的版本更新到 2.13.2。已将 Snowpark 库所依赖的
jackson-databind
版本更新到 2.13.2.2。从 Snowpark JAR 文件中删除了
jackson-core
、jackson-databind
和jackson-annotations
类。如果下载了
.tar.gz
/.zip
文件,Jackson 类的 JAR 文件现在会在lib/
子目录(jackson-core-2.13.2.jar
、jackson-databind-2.13.2.2.jar
和jackson-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。请注意,这是一项预览功能。
在 Scala 和 Java 中添加了新的 APIs,用于从暂存区上传和下载数据 (
FileOperation.uploadStream and FileOperation.downloadStream
)。在 Scala 和 Java 中添加了
DataFrameWriter.option
方法,用于指定如何将 DataFrame 中列中的值映射到表中的列。option 方法允许指定DataFrameWriter
应使用列名,而不是列顺序。
改进¶
在 Java 会话中禁用了 Closure Cleaner。Closure Cleaner 仅适用于 Scala 程序。
改进了 Java Row API 中的
Array
和Map
支持。
版本 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(联邦信息处理标准)安全要求的库的单独版本。您可以从以下位置下载此库:
Maven Central Repository (https://search.maven.org/artifact/com.snowflake/snowpark-fips/1.2.0/jar)。
要从 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 参考。
新功能¶
改进¶
在为 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 参考。
新功能¶
已将 生成器 方法添加到
Session
类,已将 seq1、seq2、seq4、seq8 和 uniform 函数添加到函数对象。已将 getSessionInfo 方法添加到 Session 类中。
添加了用于 `在 DataFrames 上异步执行操作 <https://docs.snowflake.cn/en/developer-guide/snowpark/working-with-dataframes.html#label-snowpark-dataframe-action-method-async>`_的 APIs。
改进¶
已将 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 参考。
新功能¶
将新方法 dropDuplicates 添加到 DataFrame 类。
向 Column 类(使用 in 方法)和函数对象(使用 in 函数)添加了对 in 表达式的支持。
扩展了 `DataFrame.toLocalIterator<https://docs.snowflake.com/en/developer-guide/snowpark/reference/scala/com/snowflake/snowpark/functions$.html#in(columns:Seq[com.snowflake.snowpark.Column],df:com.snowflake.snowpark.DataFrame):com.snowflake.snowpark.Column>`_ 返回的迭代器以支持
Closeable
接口,该接口允许调用迭代器上的 close 方法。添加了对新配置属性
snowpark_request_timeout_in_seconds
的支持。您可以在 在配置映射/文件中设置此项,以调整库在将依赖项上传到暂存区时使用的超时。默认情况下,超时为 86400(1 天)。
改进¶
向 DataFrame.withColumns 方法添加了逻辑,以验证是否未指定重复的输入列名称。
更新了
Copyable
和Updatable
类中的clone
方法,返回正确的 DataFrame 类型。添加了对指定应用程序 ID 的支持
行为变更¶
从 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 子类、CopyableDataFrame,用于 将数据从暂存文件复制到表中。这等效于 COPY INTO <table> 命令。
添加了新方法 DataFrame.rename(),用于重命名 DataFrame 中的列。
添加了新的函数 functions.iff(),用于指定 if-then-else 表达式。这等效于 IFF 函数。
为 DecimalType 类添加了新的构造函数。
行为变更¶
更改了 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 时出现的问题。