Instalação e configuração do conector Spark¶
São com suporte várias versões do conector; no entanto, a Snowflake recomenda fortemente o uso da versão mais recente do conector. Para as informações de lançamento da última versão, consulte as Notas sobre o lançamento do conector Spark (link na barra lateral).
As instruções neste tópico podem ser usadas para instalar e configurar todas as versões com suporte do conector.
Neste tópico:
Versões com suporte¶
O Snowflake suporta múltiplas versões do conector:
Versões do conector: |
2.x |
Versões Spark com suporte: |
Spark 3.4, 3.3, 3.2 |
Versões Scala com suporte: |
Scala 2.13, 2.12 |
Nome da fonte de dados: |
|
Nome do pacote (para classes importadas): |
|
Distribuição de pacotes: |
Página do conector Snowflake para Spark no repositório central Maven |
Código fonte: |
spark-snowflake (GitHub): . |
As notas do desenvolvedor para as diferentes versões são hospedadas com o código fonte.
Nota
O conector do Snowflake para Spark geralmente suporta as três versões mais recentes do Spark. Baixe uma versão do conector que seja específica para sua versão do Spark.
Por exemplo, para usar a versão 2.12.0 do conector com versão Spark 3.4, baixe a versão 2.12.0-spark_3.4
do conector.
Requisitos¶
Para instalar e usar o Snowflake com o Spark, você precisa do seguinte:
Um sistema operacional com suporte. Para uma lista dos sistemas operacionais com suporte, consulte Suporte ao sistema operacional.
Conector do Snowflake para Spark
Driver Snowflake JDBC (a versão compatível com a versão do conector).
Ambiente Apache Spark, seja auto-hospedado ou hospedado em qualquer um de:
Além disso, é possível usar um bucket Amazon S3 dedicado ou um contêiner de armazenamento de blobs do Azure como zona de preparação entre os dois sistemas; entretanto, isto não é necessário com a versão 2.2.0 (e superior) do conector, que usa um estágio interno temporário do Snowflake (por padrão) para toda a troca de dados.
A função usada na conexão precisa de privilégios USAGE e CREATE STAGE no esquema que contém a tabela que você lerá ou gravará.
Nota
Se você estiver usando o Databricks ou Qubole para hospedar o Spark, não será necessário baixar ou instalar o conector do Snowflake para Spark (ou qualquer um dos outros requisitos). Tanto o Databricks como o Qubole integraram o conector para fornecer conectividade nativa.
Para obter mais detalhes, consulte:
Verificação da versão do driver ou conector OCSP¶
O Snowflake usa OCSP para avaliar a cadeia de certificados ao fazer uma conexão com o Snowflake. A versão do driver ou conector e sua configuração determinam o comportamento OCSP. Para obter mais informações sobre a versão do driver ou conector, sua configuração e comportamento OCSP, consulte Configuração do OCSP.
Download e instalação do conector¶
As instruções nesta seção pertencem à versão 2.x e superior do Conector do Snowflake para Spark.
Importante
O Snowflake lança periodicamente novas versões do conector. As seguintes tarefas de instalação devem ser realizadas cada vez que você instala uma nova versão. Isto também se aplica ao driver Snowflake JDBC, que é um pré-requisito para o conector Spark.
Etapa 1: Baixar a versão mais recente do Conector do Snowflake para Spark¶
O Snowflake fornece múltiplas versões do conector. Baixe a versão apropriada, com base no seguinte:
A versão do Conector do Snowflake para Spark que você deseja usar.
A versão do Spark que você está usando.
A versão do Scala que você está usando.
Você pode baixar o Conector do Snowflake para Spark do Maven. Se você quiser criar o driver, pode acessar o código-fonte a partir do Github.
Repositório central Maven¶
O Snowflake fornece artefatos em pacotes separados para cada versão do Scala com suporte (2.12 e 2.13). Para cada uma destas versões do Scala, o Snowflake fornece diferentes versões do conector Spark, bem como artefatos separados que suportam diferentes versões do Spark.
Para baixar o conector do Spark:
Procure no repositório Maven a versão do Scala que você está usando:
A seguinte captura de tela fornece um exemplo da página de resultados da pesquisa:
A coluna Latest Version lista a última versão disponível do driver.
Os pacotes individuais utilizam a seguinte convenção de nomenclatura:
N.N.N-spark_P.P
onde:
N.N.N
é a versão do Snowflake (por exemplo, 2.12.0).P.P
é a versão do Spark (por exemplo, 3.4).
Por exemplo:
2.12.0-spark_3.4
Se você não vê o artefato para a versão com suporte do Spark que está usando, clique no link all sob a coluna Latest Version.
Baixe o arquivo JAR clicando no link jar na coluna Download.
Se você planeja verificar a assinatura do pacote, precisa baixar o arquivo de assinatura também.
Clique no link N.N.N-spark_P.P na coluna Version para exibir a página da versão.
Clique no link net.snowflake : spark-snowflake_x.xx : N.N.N-spark_P.P para carregar a página que lista os artefatos daquela versão (onde
x.xx
é a versão do Scala que você planeja usar – por exemplo,2.12
).Clique no link spark-snowflake_2.1x-N.N.N-spark_P.P.jar.asc para baixar o arquivo de assinatura.
GitHub¶
O código-fonte do Conector do Snowflake para Spark está disponível no GitHub. Entretanto, os pacotes compilados não estão disponíveis no GitHub. Você pode baixar os pacotes compilados do Maven.
Etapa 2: Baixar a versão compatível do driver Snowflake JDBC¶
Em seguida, você precisa baixar a versão do driver Snowflake JDBC que é compatível com a versão do Conector do Snowflake para Spark que você está usando.
O driver Snowflake JDBC é fornecido como um pacote Java padrão através da página do driver JDBC no repositório central Maven. Você pode baixar o pacote como um arquivo .jar
ou pode fazer referência direta ao pacote. Estas instruções consideram que você está fazendo referência ao pacote.
Para encontrar a versão com suporte do driver Snowflake JDBC para a versão do Conector do Snowflake para Spark que você está usando, consulte Notas de lançamento de Snowflake Connector for Spark.
Para obter mais detalhes sobre como baixar e instalar o driver Snowflake JDBC, consulte Download/integração do driver JDBC.
Etapa 3 (opcional): Verificar a assinatura do pacote do Conector do Snowflake para Spark¶
Para verificar a assinatura do pacote do Conector do Snowflake para Spark:
A partir do servidor de chaves públicas, baixe e importe a chave pública do Snowflake GPG para a versão do Conector do Snowflake para Spark que você está usando:
Para a versão 2.11.1 e superior:
$ gpg --keyserver hkp://keyserver.ubuntu.com --recv-keys 630D9F3CAB551AF3
Para a versão 2.8.2 a 2.11.0:
$ gpg --keyserver hkp://keyserver.ubuntu.com --recv-keys 37C7086698CB005C
Para a versão 2.4.13 até 2.8.1:
$ gpg --keyserver hkp://keyserver.ubuntu.com --recv-keys EC218558EABB25A1
Para a versão 2.4.12 e inferior:
$ gpg --keyserver hkp://keyserver.ubuntu.com --recv-keys 93DB296A69BE019A
Nota
Se esse comando falhar com o seguinte erro:
gpg: keyserver receive failed: Server indicated a failure
depois especifique que você deseja usar a porta 80 para o servidor de chaves:
gpg --keyserver hkp://keyserver.ubuntu.com:80 ...
Execute o comando
gpg --verify
para verificar a assinatura do pacote.Para o sinalizador de linha de comando
--verify
, especifique o arquivo.asc
que você baixou anteriormente como o arquivo de assinatura e o arquivo JAR como o arquivo contendo os dados assinados.$ gpg --verify spark-snowflake_x.xx-N.N.N-spark_P.P.jar.asc spark-snowflake_x.xx-N.N.N-spark_P.P.jar gpg: Signature made Wed 22 Feb 2017 04:31:58 PM UTC using RSA key ID <gpg_key_id> gpg: Good signature from "Snowflake Computing <snowflake_gpg\ @snowflake.net>"
onde:
x.xx
é a versão do Scala (por exemplo, 2.12).N.N.N
é a versão do conector do Snowflake para Spark (por exemplo, 2.12.0).P.P
é a versão do Spark (por exemplo, 3.4).
Nota
A verificação da assinatura produz um aviso semelhante ao seguinte:
gpg: Signature made Mon 24 Sep 2018 03:03:45 AM UTC using RSA key ID <gpg_key_id> gpg: Good signature from "Snowflake Computing <snowflake_gpg@snowflake.net>" unknown gpg: WARNING: This key is not certified with a trusted signature! gpg: There is no indication that the signature belongs to the owner.
Para evitar o aviso, você pode conceder confiança implícita à chave pública GPG do Snowflake.
Seu ambiente local pode conter múltiplas chaves GPG. Entretanto, por razões de segurança, o Snowflake alterna periodicamente a chave pública GPG. Nossa prática recomendada é excluir a chave pública existente depois de confirmar que a última chave funciona com o último pacote assinado. Por exemplo:
$ gpg --delete-key "Snowflake Computing"
Etapa 4: Configurar o cluster Spark local ou ambiente Spark hospedado no Amazon EMR¶
Se você tiver uma instalação do Spark local, ou uma instalação do Spark no Amazon EMR, precisa configurar o programa spark-shell
para incluir tanto o driver Snowflake JDBC quanto o Conector Spark:
Para incluir o driver Snowflake JDBC, use a opção
--package
para fazer referência ao pacote JDBC da página do driver JDBC no Repositório central Maven, fornecendo a versão exata do driver que deseja usar (por exemplo,net.snowflake:snowflake-jdbc:3.13.30
).Para incluir o Conector Spark, use a opção
--package
para fazer referência ao pacote apropriado (Scala 2.12 ou `Scala 2.13`__) hospedado no Repositório central Maven, fornecendo a versão exata do driver que você deseja usar (por exemplo,net.snowflake:spark-snowflake_2.12:2.12.0-spark_3.4
).
Por exemplo:
spark-shell --packages net.snowflake:snowflake-jdbc:3.13.22,net.snowflake:spark-snowflake_2.12:2.12.0-spark_3.4
Instalação de pacotes adicionais (se necessário)¶
Dependendo de sua instalação do Spark, alguns pacotes requeridos pelo conector podem estar faltando. Você pode adicionar pacotes ausentes à sua instalação usando o sinalizador apropriado para spark-shell
:
--packages
--jars
(se os pacotes foram baixados como arquivos.jar
)
Os pacotes necessários estão listados abaixo, com a sintaxe (incluindo o número da versão) para usar o sinalizador --packages
para fazer referência aos pacotes:
org.apache.hadoop:hadoop-aws:2.7.1
org.apache.httpcomponents:httpclient:4.3.6
org.apache.httpcomponents:httpcore:4.3.3
com.amazonaws:aws-java-sdk-core:1.10.27
com.amazonaws:aws-java-sdk-s3:1.10.27
com.amazonaws:aws-java-sdk-sts:1.10.27
Por exemplo, se os pacotes Apache estiverem faltando, para adicionar os pacotes por referência:
spark-shell --packages org.apache.hadoop:hadoop-aws:2.7.1,org.apache.httpcomponents:httpclient:4.3.6,org.apache.httpcomponents:httpcore:4.3.3
Preparação de um local externo para arquivos¶
Talvez seja necessário preparar um local externo para os arquivos que você deseja transferir entre o Snowflake e o Spark.
Esta tarefa é necessária se uma das seguintes situações for verdadeira:
Você executará trabalhos que levam mais de 36 horas, que é a duração máxima do token utilizado pelo conector para acessar o estágio interno para troca de dados.
A versão do Conector do Snowflake para Spark é 2.1.x ou anterior (mesmo se seus trabalhos exigirem menos de 36 horas).
Nota
Se você não estiver usando a versão v2.2.0 (ou superior) do conector, a Snowflake recomenda fortemente a atualização para a versão mais recente.
Preparação de um bucket AWS S3 externo¶
Prepare um bucket S3 externo que o conector possa usar para trocar dados entre o Snowflake e o Spark. Você então fornece ao conector as informações de localização, juntamente com as credenciais necessárias da AWS para a localização. Para obter mais detalhes, consulte Autenticação do S3 para troca de dados no próximo tópico.
Importante
Se você usar um bucket S3 externo, o conector não remove automaticamente nenhum dado intermediário/temporário deste local. Como resultado, é melhor usar um bucket ou caminho específico (prefixo) e definir uma política de ciclo de vida para o bucket/caminho para limpar automaticamente os arquivos mais antigos. Para obter mais detalhes sobre a configuração de uma política de ciclo de vida, consulte a documentação do Amazon S3.
Preparação de um contêiner de armazenamento de blobs do Azure¶
Prepare um contêiner de armazenamento de blobs do Azure externo que o conector possa usar para trocar dados entre o Snowflake e o Spark. Você então fornece ao conector as informações de localização, juntamente com as credenciais do Azure necessárias para a localização. Para obter mais detalhes, consulte Autenticação do Azure para troca de dados no próximo tópico.