CertSafari
    Snowflake SnowPro Advanced: Architect (ARA-C01)· Lessons

    Domain 3 · Lesson 10/13

    Snowflake Drivers, SQL API, CLI Clients and Snowpark

    Outline key tools in Snowflake’s ecosystem and how they interact with Snowflake.

    12 min read
    8.33% of exam
    9 sources
    Published 5 Oct 2026
    Docs as of 4 Oct 2026

    What you will be able to do

    • Compare the JDBC and ODBC drivers, including their platform and version requirements
    • Describe what the Snowflake SQL API does and how clients authenticate to it
    • Use SYSTEM$ALLOWLIST to find the hosts and ports a firewall must allow
    • Explain how SnowSQL and Snowflake CLI relate to each other, and name the languages Snowpark supports

    1.JDBC and ODBC drivers

    When an application isn't written in Python, it usually connects to Snowflake through a standard driver. Snowflake ships two.

    The JDBC driver is a type 4 driver that supports core JDBC functionality. It must run in a 64-bit environment on a Java LTS (Long-Term Support) version, 1.8 or higher. Most client tools that support JDBC can use it. Google Cloud Storage regional endpoints are supported from driver version 3.21.0 onward.

    The ODBC driver serves applications built on ODBC. It now has two major lines. From version 4.0.0, it's built on the Universal Core, a thin C layer over a shared Rust library. The public ODBC interface hasn't changed, and application code never sees the Rust layer. Snowflake's advice on which line to install has a twist: choose based on the driver already on your machine, not on how old your Snowflake account is. If a vendor tool manages the driver, follow the vendor's upgrade process. File transfer is another place where the version matters, because the minimum version that supports the GET and PUT commands depends on your cloud:

    Minimum ODBC driver version for GET and PUT support, by cloud platform
    Cloud hosting the accountMinimum ODBC driver version
    Amazon Web Services2.17.5
    Microsoft Azure2.20.2
    Google Cloud Platform2.21.5

    Checkpoint 1 of 7· Match them up

    Match each driver fact to the driver it describes.

    Tap a term, then the definition that fits it.

    Sources12

    2.The Snowflake SQL API

    Drivers keep a session open from inside the client application. The Snowflake SQL API takes a different approach. It's a REST API, so any program that can send HTTP requests can access and update data in Snowflake, whether to run queries or to manage the deployment, for example by provisioning users and roles or creating tables. It offers three core operations:

    - submit SQL statements for execution - check the status of a statement's execution - cancel a statement's execution

    It can run standard queries and most DDL and DML statements. Some statement types aren't supported, and Snowflake documents those limitations separately. A single request can carry multiple statements. A stored procedure can be created by specifying it in the request body. Explicit transactions are possible by specifying the start, end and statements in the transaction. Requests authenticate with OAuth or key pair authentication.

    Checkpoint 2 of 7· Exam question

    An architect is reviewing what the Snowflake Connector for Kafka provisions automatically for each Kafka topic it consumes in its default (non-streaming) mode. Which set of objects does the connector create per topic?

    Checkpoint 3 of 7· Check yourself

    A team is building a serverless integration that calls Snowflake over HTTPS through the SQL API. Which authentication methods does the SQL API documentation list?

    Sources3

    3.Opening the firewall with SYSTEM$ALLOWLIST

    Every client covered so far, whether a driver, a connector or a CLI, needs a network path to Snowflake. Firewalls often block that path by default. SYSTEM$ALLOWLIST is the system function that returns the host names and port numbers you need to allow, covering your account URL, your stages and the other hosts Snowflake uses. You can also pass its output to SnowCD.

    The function takes no arguments. It returns a VARIANT holding an array of JSON structures, each with three fields: type, host and port. Some types can appear more than once in the output, STAGE and OCSP_RESPONDER for example. Here is part of the sample output:

    Two entries from SYSTEM$ALLOWLIST sample output: the account deployment host and a stage hostjson
    {"type":"SNOWFLAKE_DEPLOYMENT", "host":"xy12345.snowflakecomputing.com", "port":443}, {"type":"STAGE", "host":"sfc-customer-stage.s3.us-west-2.amazonaws.com", "port":443},

    Some of the types point straight back to the tools in this lesson. SNOWSQL_REPO is the endpoint SnowSQL uses for automatic downloads or upgrades. OUT_OF_BAND_TELEMETRY lists the hosts that drivers report metrics and incidents to. OCSP_CACHE and OCSP_RESPONDER handle certificate revocation checks, and OCSP_RESPONDER isn't needed when you use private connectivity. To get a table instead of JSON, combine the function with PARSE_JSON and FLATTEN:

    Checkpoint 4 of 7· Fill the gap

    Which table function turns the JSON array into one row per host?

    SELECT t.VALUE:type::VARCHAR as type, t.VALUE:host::VARCHAR as host, t.VALUE:port as port FROM TABLE( ? (input => PARSE_JSON(SYSTEM$ALLOWLIST()))) AS t;

    Sources4

    4.SnowSQL and Snowflake CLI

    Snowflake has two command-line clients. SnowSQL connects to Snowflake to run SQL queries and all DDL and DML operations, including loading data into tables and unloading it out of them. The snowsql executable runs as an interactive shell, or in batch mode through stdin or with the -f option. It was built with the Python connector, but you don't need to install the connector first, because the installers bundle everything SnowSQL needs. SnowSQL is now legacy, with support ending per minor release:

    SnowSQL minor releases and their support end dates
    SnowSQL versionInitial release dateSupport end date
    1.2.xFebruary 02, 2023December 19, 2025
    1.3.xMay 02, 2024May 02, 2026
    1.4.xMay 22, 2025May 22, 2027
    1.5.xApril 16, 2026April 16, 2028

    Snowflake CLI is the preferred client for new installs and new work. It's open source and was designed for developer workloads as well as SQL. Its snow command creates, manages and deploys apps across Streamlit in Snowflake, the Native App Framework, Snowpark Container Services and Snowpark. It can also handle user-defined functions, stored procedures, stages, Git repositories and SQL execution. You can install it as a Python tool:

    Installing Snowflake CLI with pipbash
    pip install snowflake-cli

    The pip method modifies the Python environment where you install Snowflake CLI, so the docs suggest considering uv or pipx instead to avoid dependency conflicts. pipx installs and runs Python packages in isolated virtual environments, so it doesn't modify your current Python environment:

    Installing Snowflake CLI with pipxbash
    pipx install snowflake-cli

    Once installed, run snow --help to verify the installation, snow --version to show the CLI version, and snow --info to show information about it. The top-level commands include sql (executes Snowflake queries), stage, streamlit, snowpark, connection and object.

    Checkpoint 5 of 7· Exam question

    A data engineering team wants to read a 4 TB Snowflake table into an existing Apache Spark cluster, join it against data already cached in Spark, and write the joined result back to a new Snowflake table. Which statement about the Snowflake Connector for Spark is accurate for this workflow?

    Checkpoint 6 of 7· Check yourself

    A new team member asks which command-line client to learn for deploying Streamlit apps and Snowpark procedures in a new project. What is the accurate answer?

    Sources567

    5.Snowpark: Python, Scala and Java libraries

    Every tool so far moves data or SQL between an outside system and Snowflake. Snowpark works the other way round: it brings the processing to the data. The Snowpark API is a library for querying and processing data at scale. Applications built with it process data inside Snowflake, on its elastic, serverless engine, so the data doesn't have to travel to wherever the application code runs.

    Snowflake provides Snowpark libraries for exactly three languages: Python, Scala and Java. Each has its own developer guide and API reference, and the libraries are available from the Snowpark Client Download page. Snowflake explicitly compares developing with Snowpark against using the Snowflake Connector for Spark. The Spark connector brings Snowflake into the Apache Spark ecosystem, enabling Spark to read data from, and write data to, Snowflake; it runs as a Spark plugin provided as a Spark package (spark-snowflake). Snowflake lists these benefits of Snowpark over it:

    - libraries and patterns purpose built for different languages, without compromising on performance or functionality - code can be authored with local tools such as Jupyter, VS Code or IntelliJ - pushdown for all operations, including Snowflake UDFs, so transformation and heavy lifting happen in Snowflake - no separate cluster outside Snowflake for computations; scale and compute management are handled by Snowflake

    That comparison is the deciding question in architecture scenarios: a Spark cluster pulling data out through the connector, or the same logic running in Snowflake through Snowpark. Snowflake CLI ties back in here too, because its snow snowpark commands build, deploy and run Snowpark procedures and functions.

    Checkpoint 7 of 7· Check yourself

    A hiring manager writes that the role will 'build Snowpark pipelines in Python, Scala, Java or C#'. Which correction is accurate?

    Sources89

    Exam traps

    Each one states something that sounds right. Open it to see what is actually true.

    1. 1.Older Snowflake accounts should stay on ODBC driver 3.x, and newer accounts should use 4.x.Why is that wrong?

      Snowflake says to choose the ODBC path based on the driver installed on your machine, not on how old your account is.

      Covered in JDBC and ODBC drivers

    2. 2.You have to install the Snowflake Connector for Python before you can install SnowSQL, because SnowSQL is built on it.Why is that wrong?

      SnowSQL was built with the Python connector, but the installers bundle all the software it needs, so the connector isn't a prerequisite.

      Covered in SnowSQL and Snowflake CLI

    3. 3.The SQL API can run any SQL statement that works through a JDBC session.Why is that wrong?

      The SQL API runs standard queries and most DDL and DML statements. Some statement types are unsupported and are documented as limitations.

      Covered in The Snowflake SQL API

    Practise it for real

    Produce a firewall allowlist for your Snowflake account and read it as a table

    1. 1.Run SELECT SYSTEM$ALLOWLIST(); in a worksheet or in Snowflake CLI

      Why: The function returns every host and port that your clients need to reach

      You should see: One VARIANT value containing a JSON array of objects with type, host and port fields

    2. 2.Run the FLATTEN and PARSE_JSON version of the query shown in the allowlist section

      Why: Tabular output is easier to hand to a network team than raw JSON

      You should see: One row per entry, with TYPE, HOST and PORT columns, including SNOWFLAKE_DEPLOYMENT and STAGE rows

    3. 3.Find the SNOWSQL_REPO, OCSP_CACHE and OCSP_RESPONDER rows, and note whether more than one STAGE row appears

      Why: These are the entries that client tools depend on for upgrades and certificate checks

      You should see: Hosts on port 443 for the deployment and stage entries, and port 80 for the OCSP entries

    Stuck? Get a nudge

    If the call fails with an error such as 'SYSTEM$ALLOWLIST: Connection failure', wait a few minutes and rerun it before you contact Snowflake Support.

    Sources

    Every claim above is drawn from one of these pages, quoted as it was written on the date shown.

    1. 1.
      “The JDBC driver must be installed in a 64-bit environment and requires Java LTS (Long-Term Support) versions 1.8 or higher.”
      ↩︎ JDBC and ODBC drivers
      “Snowflake provides a JDBC type 4 driver that supports core JDBC functionality.”
      ↩︎ Checkpoint
    2. 2.
      “Starting with version 4.0.0, the driver is built on the Universal Core: a thin C layer over a shared Rust library”
      ↩︎ JDBC and ODBC drivers
      “Choose based on the driver installed on your machine, not the age of your Snowflake account.”
      ↩︎ Exam trap 1
    3. 3.
      “The Snowflake SQL API is a REST API that you can use to access and update data in a Snowflake database.”
      ↩︎ The Snowflake SQL API
      “Execute SQL in a transaction by specifying the start, end, and statements in the transaction.”
      ↩︎ The Snowflake SQL API
      “You can use this API to execute standard queries and most DDL and DML statements.”
      ↩︎ Exam trap 3
      “Use OAuth or Key Pair to authenticate with the Snowflake server.”
      ↩︎ Checkpoint
    4. 4.
      “The output of this function can then be passed into SnowCD.”
      ↩︎ Opening the firewall with SYSTEM$ALLOWLIST
      “Endpoint accessed by SnowSQL to perform automatic downloads or upgrades.”
      ↩︎ Opening the firewall with SYSTEM$ALLOWLIST
      “The output might include multiple entries for certain types (e.g. STAGE, OCSP_RESPONDER).”
      ↩︎ Opening the firewall with SYSTEM$ALLOWLIST
    5. 5.
      “SnowSQL (snowsql executable) can be run as an interactive shell or in batch mode through stdin or using the -f option.”
      ↩︎ SnowSQL and Snowflake CLI
      “however, the connector is not a prerequisite for installing SnowSQL.”
      ↩︎ Exam trap 2
      “SnowSQL is a legacy command-line client. Snowflake will only add new features and enhancements to Snowflake CLI.”
      ↩︎ Prediction
    6. 6.
      “It supports a range of Snowflake features, including user-defined functions, stored procedures, Streamlit in Snowflake, and SQL execution.”
      ↩︎ SnowSQL and Snowflake CLI
      “Snowflake CLI is the preferred command-line client for new installs and new work.”
      ↩︎ Checkpoint
    7. 7.
    8. 8.
      “you can build applications that process data in Snowflake without moving data to the system where your application code runs”
      ↩︎ Snowpark: Python, Scala and Java libraries
      “In comparison to using the Snowflake Connector for Spark, developing with Snowpark includes the following benefits:”
      ↩︎ Snowpark: Python, Scala and Java libraries
      “Snowflake currently provides Snowpark libraries for three languages: Java, Python, and Scala.”
      ↩︎ Checkpoint
    9. 9.
      “enabling Spark to read data from, and write data to, Snowflake”
      ↩︎ Snowpark: Python, Scala and Java libraries

    Spotted a mistake, or was something unclear? Tell us.