在 AWS Glue 中使用 Python 调用 Snowflake Stored Procedure



我有一个管道,我需要使用 Python shell 在 AWS Glue 作业中调用 Snowflake 存储过程。

任何人都可以为相同的代码建议适当的代码。

谢谢

对于 DDL/DML 语句执行,Snowflake Spark Connector 提供了一个实用程序函数:net.snowflake.spark.snowflake.Utils.runQuery(…)

由于它是一个Java 类,而不是直接在 Python 库中提供,因此您需要通过 Spark 驱动程序运行时中的 Py4J 接口调用它:

# A direct call:
sc._gateway.jvm.net.snowflake.spark.snowflake.Utils.runQuery(sfOptions, "CALL SF_TEST_DB.STRUCTURED.TEST()")
# Alternatively, using an import style:
from py4j.java_gateway import java_import
java_import(sc._gateway.jvm, "net.snowflake.spark.snowflake.Utils")
Utils = sc._gateway.jvm.Utils
Utils.runQuery(sfOptions, "CALL SF_TEST_DB.STRUCTURED.TEST()")

不过有一个警告。引用文档:

runQuery方法仅返回TRUEFALSE。它适用于不返回结果集的语句,例如 DDL 语句(如CREATE TABLE(和 DML 语句(如INSERTUPDATEDELETE(。它对返回结果集的语句(如SELECTSHOW(没有用。

能够使用 AWS 胶水中的 python 连接器连接到 snowflake。 请参考下面的链接,为要在 AWS 胶水中使用的雪花连接器构建外部 python 库包 https://github.com/snowflakedb/snowflake-connector-python/blob/HEAD/test/README.rst

谢谢

最新更新