为 Snowpark Java 创建会话

要在应用程序中使用 Snowpark,您需要创建一个会话。为了方便编写代码,您还可以导入包和对象的名称。

本主题内容:

从 Snowpark 的包导入名称

Snowpark API 提供了许多不同包中的类。为方便起见,可以导入这些包,以避免对类不得不使用限定名称。

例如:

为 Snowpark 创建会话

使用该库的第一步是与 Snowflake 数据库建立会话。若要创建会话,请使用 SessionBuilder 类中的方法。可以通过调用 Session 类中的静态 builder 方法来访问 SessionBuilder 对象:

import com.snowflake.snowpark_java.*;

...
// Get a SessionBuilder object.
SessionBuilder builder = Session.builder();
Copy

若要提供用 Snowflake 数据库建立会话的详细信息(例如,账户标识符、用户名等),请创建属性文件(文本文件)或以编程方式构建一个包含属性的 Map

在属性文件或 Map 中,设置以下属性:

  • URL:按照 https://account_identifier.snowflakecomputing.cn 形式,将此属性设置为您账户的 URL。

    请参阅 账户标识符

    如果账户标识符包含下划线 (_),请用连字符 (-) 替换这些下划线。

  • 连接到 Snowflake 所需的任何其他 JDBC 参数(请参阅 JDBC 驱动程序文档中的 JDBC 驱动程序连接参数参考),例如 USERROLEWAREHOUSEDBSCHEMA 等。

    备注

    要更改日志记录级别(例如,从 INFO 更改为 DEBUG),请参阅 更改日志记录设置

  • (可选) snowpark_request_timeout_in_seconds:将此项设置为 Snowpark 库在以下情况下应等待的最大秒数:

    此属性的默认值为 86400 秒(1 天)。

    备注

    此属性是在 Snowpark 0.10.0 中引入的。

若要进行身份验证,可以使用 JDBC 驱动程序支持的相同机制。例如,您可以使用:

对于密钥对身份验证,您可以:

  • PRIVATE_KEY_FILE 属性设置为私钥文件的路径。

    如果私钥已加密,请将 PRIVATE_KEY_FILE_PWD 属性设置为用于解密私钥的密码。

  • PRIVATEKEY 属性设置为私钥文件中 未加密私钥`的字符串值。(如果私钥已加密,则必须先解密私钥,然后才能将其设置为 :code:`PRIVATEKEY 属性的值。)

要创建会话,请执行以下操作:

  1. 设置 SessionBuilder 对象中的属性。

    • 如果创建一个属性文件,请将属性文件的路径传递给 SessionBuilder 对象的 configFile 方法。

    • 如果以编程方式构建了属性 Map,请将 Map 传递 SessionBuilder 对象的 configs 方法 。

    这两种方法都返回具有这些属性的 SessionBuilder 对象。

  2. 调用 SessionBuilder 对象的 create 方法来建立会话。

下面是一个属性文件的示例,该文件设置用于连接到 Snowflake 数据库的基本参数。此示例设置为使用密钥对身份验证。将 PRIVATE_KEY_FILE 设置为私钥文件的路径。此外,如果私钥已加密,则必须将 PRIVATE_KEY_FILE_PWD 设置为用于解密私钥的密码:

# profile.properties file (a text file)
URL = https://<account_identifier>.snowflakecomputing.cn
USER = <username>
PRIVATE_KEY_FILE = </path/to/private_key_file.p8>
PRIVATE_KEY_FILE_PWD = <if the private key is encrypted, set this to the passphrase for decrypting the key>
ROLE = <role_name>
WAREHOUSE = <warehouse_name>
DB = <database_name>
SCHEMA = <schema_name>
Copy

或者,可以将 PRIVATEKEY 属性设置为私钥文件中 未加密的 私钥。

# profile.properties file (a text file)
URL = https://<account_identifier>.snowflakecomputing.cn
USER = <username>
PRIVATEKEY = <unencrypted_private_key_from_the_private_key_file>
ROLE = <role_name>
WAREHOUSE = <warehouse_name>
DB = <database_name>
SCHEMA = <schema_name>
Copy

以下示例使用此属性文件创建新会话:

// Create a new session, using the connection properties
// specified in a file.
Session session = Session.builder().configFile("/path/to/properties/file").create();
Copy

以下示例使用 Map 来设置属性:

import com.snowflake.snowpark_java.*;
import java.util.HashMap;
import java.util.Map;
...
// Create a new session, using the connection properties
// specified in a Map.
// Replace the <placeholders> below.
Map<String, String> properties = new HashMap<>();
properties.put("URL", "https://<account_identifier>.snowflakecomputing.cn:443");
properties.put("USER", "<user name>");
properties.put("PRIVATE_KEY_FILE", "</path/to/private_key_file.p8>");
properties.put("PRIVATE_KEY_FILE_PWD", "<if the private key is encrypted, set this to the passphrase for decrypting the key>");
properties.put("ROLE", "<role name>");
properties.put("WAREHOUSE", "<warehouse name>");
properties.put("DB", "<database name>");
properties.put("SCHEMA", "<schema name>");
Session session = Session.builder().configs(properties).create();
Copy

结束会话

如果不再需要使用会话来执行查询,并且想要取消当前正在运行的任何查询,请调用 Session 对象的 close 方法。例如:

// Close the session, cancelling any queries that are currently running, and
// preventing the use of this Session object for performing any subsequent queries.
session.close();
Copy
语言: 中文