Вызов хранимой процедуры Snowflake с использованием Python в AWS Glue - PullRequest
0 голосов
/ 17 июня 2020

У меня есть конвейер, в котором мне нужно вызвать хранимую процедуру Snowflake в задании AWS Glue, используя Python shell.

Кто-нибудь может предложить соответствующий код для этого же.

Спасибо

Ответы [ 2 ]

0 голосов
/ 17 июня 2020

Удалось соединить со снежинкой при помощи python коннектора в AWS клее. Пожалуйста, обратитесь к ссылке ниже, чтобы собрать внешний пакет библиотеки python для коннектора снежинки, который будет использоваться в AWS клее https://github.com/snowflakedb/snowflake-connector-python/blob/HEAD/test/README.rst

Спасибо

0 голосов
/ 17 июня 2020

Для выполнения операторов DDL / DML Snowflake Spark Connector предлагает служебную функцию : net.snowflake.spark.snowflake.Utils.runQuery(…)

Поскольку его Java класс не предлагается напрямую в библиотеках Python вам нужно будет вызвать его через интерфейс Py4J в среде выполнения драйвера Spark:

# 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 возвращает только TRUE или FALSE. Он предназначен для операторов, которые не возвращают набор результатов, например операторов DDL, таких как CREATE TABLE, и операторов DML, таких как INSERT, UPDATE и DELETE. Это бесполезно для операторов, которые возвращают набор результатов, например SELECT или SHOW.

...