Для выполнения операторов 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
.