Execução de cargas de trabalho do Spark por meio de um cliente de terceiros

Você pode executar cargas de trabalho do Spark interativamente por meio de notebooks Jupyter, VS Code ou qualquer interface baseada em Python sem precisar gerenciar um cluster Spark. As cargas de trabalho são executadas na infraestrutura do Snowflake.

Por exemplo, você pode executar as seguintes tarefas:

  1. Confirme que você tem os pré-requisitos.

  2. Configuração de seu ambiente para se conectar com Snowpark Connect for Spark no Snowflake.

  3. Instale Snowpark Connect for Spark.

  4. Execute código PySpark de seu cliente para executar no Snowflake.

Pré-requisitos

Confirme se suas instalações do Python e do Java são baseadas na mesma arquitetura de computador. Por exemplo, se Python for baseado em ARM64, Java também deverá ser ARM64 (e não x86_64, por exemplo).

Configure seu ambiente

Você pode configurar seu ambiente de desenvolvimento garantindo que seu código possa se conectar ao Snowpark Connect for Spark no Snowflake. Para conectar-se ao código do cliente Snowflake, você usará um arquivo .toml contendo detalhes da conexão.

Se você tiver Snowflake CLI instalado, você pode usá-lo para definir uma conexão. Caso contrário, você pode escrever manualmente os parâmetros de conexão em um arquivo config.toml.

Adicione uma conexão usando Snowflake CLI

Você pode usar Snowflake CLI para adicionar propriedades de conexão que Snowpark Connect for Spark pode usar para se conectar ao Snowflake. Suas alterações são salvas em um arquivo config.toml.

  1. Execute o seguinte comando para adicionar uma conexão usando o comando de conexão snow: comado add.

    snow connection add
    
    Copy
  2. Siga as instruções para definir uma conexão.

    Certifique-se de especificar spark-connect como o nome da conexão.

    Este comando adiciona uma conexão ao seu arquivo config.toml, como no exemplo a seguir:

    [connections.spark-connect]
    host = "example.snowflakecomputing.com"
    port = 443
    account = "example"
    user = "test_example"
    password = "password"
    protocol = "https"
    warehouse = "example_wh"
    database = "example_db"
    schema = "public"
    
    Copy
  3. Execute o seguinte comando para confirmar que a conexão funciona.

    Você poderá testar a conexão dessa maneira quando a adicionar usando Snowflake CLI.

    snow connection list
    snow connection test --connection spark-connect
    
    Copy

Adição de uma conexão gravando manualmente um arquivo de conexão

Você pode escrever ou atualizar manualmente um arquivo connections.toml para que seu código possa se conectar ao Snowpark Connect for Spark no Snowflake.

  1. Execute o seguinte comando para garantir que seu arquivo connections.toml permita que somente o proprietário (usuário) tenha acesso de leitura e gravação.

    chmod 0600 "~/.snowflake/connections.toml"
    
    Copy
  2. Edite o arquivo connections.toml para que ele contenha uma conexão [spark-connect] com as propriedades de conexão no exemplo a seguir.

    Certifique-se de substituir os valores por suas próprias especificações de conexão.

    [spark-connect]
    host="my_snowflake_account.snowflakecomputing.com"
    account="my_snowflake_account"
    user="my_user"
    password="&&&&&&&&"
    warehouse="my_wh"
    database="my_db"
    schema="public"
    
    Copy

Instalação do Snowpark Connect for Spark

Você pode instalar Snowpark Connect for Spark como um pacote Python.

  1. Crie um ambiente virtual Python.

    Por exemplo, você pode usar Conda, como no exemplo a seguir.

    conda create -n xxxx pip python=3.12
    conda activate xxxx
    
    Copy
  2. Instale o pacote Snowpark Connect for Spark.

    pip install --upgrade --force-reinstall snowpark-connect
    
    Copy
  3. Adicione o código Python para iniciar um Snowpark Connect for Spark e crie uma sessão de Snowpark Connect for Spark.

    import os
    import snowflake.snowpark
    from snowflake import snowpark_connect
    # Import snowpark_connect before importing pyspark libraries
    from pyspark.sql.types import Row
    
    os.environ["SPARK_CONNECT_MODE_ENABLED"] = "1"
    snowpark_connect.start_session()  # Start the local |spconnect| session
    spark = snowpark_connect.get_session()
    
    Copy

Execute o código PySpark de seu cliente

Quando você tiver uma conexão autenticada em vigor, você poderá escrever código PySpark como normalmente faria.

Por exemplo, você pode executar o seguinte exemplo simples:

from pyspark.sql import Row

  df = spark.createDataFrame([
      Row(a=1, b=2.),
      Row(a=2, b=3.),
      Row(a=4, b=5.),])

  print(df.count())
Copy

Solução de problemas de instalação de Snowpark Connect for Spark

Com a lista de verificações a seguir, você pode solucionar problemas de instalação e uso do Snowpark Connect.

  • Certifique-se de que Java e Python sejam baseados na mesma arquitetura.

  • Use o arquivo do pacote Snowpark Connect mais recente, conforme descrito em Instalação do Snowpark Connect for Spark.

  • Confirme que o comando :com:`Python` Comando com o código PySpark está funcionando corretamente para execução local, ou seja, sem conectividade do Snowflake.

    Por exemplo, execute um comando como o seguinte:

    python your_pyspark_file.py
    
    Copy