Pular para o conteúdo principal

Ingerir arquivos de servidores SFTP

info

Visualização

O conector SFTP está em versão prévia pública.

Aprenda como importar arquivos de servidores SFTP usando LakeFlow Connect. O conector SFTP amplia a funcionalidade do Auto Loader para fornecer ingestão incremental e segura de servidores SFTP com governança do Unity Catalog.

recurso principal

O conector SFTP oferece o seguinte:

  • Autenticação baseada em key primária e senha.
  • Ingestão e processamento incremental de arquivos com garantia de processamento exatamente uma vez.
  • Inferência automática de esquemas, evolução e recuperação de dados.
  • Governança Unity Catalog para ingestão segura e credenciais.
  • Suporte a uma ampla variedade de formatos de arquivo: JSON, CSV, XML, PARQUET, AVRO, TEXT, BINARYFILE e ORC.
  • Suporte integrado para correspondência de padrões e curingas para segmentar facilmente subconjuntos de dados.
  • Disponibilidade em todos os tipos compute , incluindo pipeline declarativo LakeFlow Spark , Databricks SQL, serverless e clássico com Databricks Runtime 17.3 e superior.

Antes de começar

Para criar a conexão e o pipeline de ingestão, você precisa do seguinte:

  • Um workspace com Unity Catalog ativado.
  • CREATE CONNECTION privilégios.
  • Computação que utiliza Databricks Runtime versão 17.3 ou superior.

Configurar SFTP

Primeiro, confirme se o servidor SFTP de origem está acessível ao seu ambiente de cluster Databricks:

  • Certifique-se de que o servidor remoto esteja disponível na VPC que foi configurada com seu workspace.
  • Certifique-se de que suas regras SSH permitam o intervalo de IPs da VPC do Databricks (se você estiver usando compute clássica) ou os IPs estáveis (se estiver usando compute serverless ).
  • A partir do plano compute clássico, configure um endereço IP estável com um balanceador de carga, gateway NAT, gateway de internet ou equivalente e conecte-o à sub-rede onde Databricks compute está implantado. Isso permite que o recurso compute compartilhe um endereço IP público estável que pode ser adicionado à lista de permissões do servidor SFTP. Para obter instruções sobre como configurar as definições de rede, consulte Emparelhamento de VPC.
  • Na camada compute serverless , veja o passo 1: Crie uma configuração de conectividade de rede e copie os IPs estáveis para obter um IP de saída estável.

Criar a conexão

Crie uma conexão Unity Catalog para armazenar suas credenciais SFTP. Você deve ter privilégios CREATE CONNECTION .

O conector suporta os seguintes métodos de autenticação:

  • keyprivada PEM
  • Autenticação baseada em senha

Databricks recomenda o uso da autenticação key privada PEM. A Databricks também recomenda o uso de credenciais com o mínimo de privilégios no servidor SFTP de origem (por exemplo, um usuário sem privilégios de root com acesso somente leitura).

Ao criar o pipeline, o conector tenta encontrar automaticamente uma conexão que você possa usar e que corresponda ao host. Se houver várias conexões correspondentes, o conector escolherá a primeira conexão que se conectar com sucesso ao host. No entanto, a Databricks recomenda que você especifique o usuário explicitamente. Isso garante que o conector não escolha uma conexão para outro usuário com acesso ao host.

key privada PEM (recomendada)

  1. No workspace Databricks , clique em Catálogo > Dados Externos > Conexões .

  2. Clique em Criar conexão .

  3. Na página "Informações básicas de conexão" do assistente de configuração de conexão , insira um nome de conexão exclusivo.

  4. Para o tipo de conexão, selecione SFTP .

  5. Para o tipo de autenticação , selecione Chave privada PEM .

  6. Clique em Avançar .

  7. Na página de Autenticação , em Host , insira o nome do host do servidor remoto.

  8. No campo Usuário , insira a identidade do usuário utilizada para acessar a instância externa.

  9. Clique em Avançar .

  10. Na página Detalhes da conexão , insira a key privada no formato PEM. Forneça também a senha key , se aplicável.

  11. Se você quiser ignorar a verificação da impressão digital key do host, desmarque a opção Impor impressão digital key do host .

    Quando esta opção é selecionada, a conexão só prossegue se a key pública do servidor corresponder à impressão digital SHA-256 esperada. Quando desativada, a conexão prossegue independentemente da partida. Consulte o administrador da sua rede antes de desativar esta opção.

  12. Se a opção "Impor impressão digital key do host" estiver marcada, insira a impressão digital do servidor SFTP.

    Você pode obter a impressão digital com o administrador do servidor ou usando um comando CLI . Você também pode pressionar Testar e criar conexão > Testar . A mensagem de erro resultante fornece a impressão digital. Por exemplo:

    ECDSA key fingerprint is SHA256:XXX/YYY

  13. Clique em Testar e criar conexão .

  14. Se a conexão for bem-sucedida, clique em Criar .

Autenticação baseada em senha

  1. No workspace Databricks , clique em Catálogo > Dados Externos > Conexões .

  2. Clique em Criar conexão .

  3. Na página "Informações básicas de conexão" do assistente de configuração de conexão , insira um nome de conexão exclusivo.

  4. Para o tipo de conexão, selecione SFTP .

  5. Em Tipo de autenticação , selecione Nome de usuário e senha .

  6. Clique em Avançar .

  7. Na página de Autenticação , em Host , insira o nome do host do servidor remoto.

  8. No campo Usuário , insira a identidade do usuário utilizada para acessar a instância externa.

  9. No campo Senha , insira a senha da instância externa.

  10. Clique em Avançar .

  11. Se você quiser ignorar a verificação da impressão digital key do host, desmarque a opção Impor impressão digital key do host .

    Quando esta opção é selecionada, a conexão só prossegue se a key pública do servidor corresponder à impressão digital SHA-256 esperada. Quando desativada, a conexão prossegue independentemente da partida. Consulte o administrador da sua rede antes de desativar esta opção.

  12. Se a opção "Impor impressão digital key do host" estiver marcada, insira a impressão digital do servidor SFTP.

    Você pode obter a impressão digital com o administrador do servidor ou usando um comando CLI . Você também pode pressionar Testar e criar conexão > Testar . A mensagem de erro resultante fornece a impressão digital. Por exemplo:

    ECDSA key fingerprint is SHA256:XXX/YYY

  13. Clique em Testar e criar conexão .

  14. Se a conexão for bem-sucedida, clique em Criar .

Ler arquivos do servidor SFTP

Os exemplos a seguir mostram como ler arquivos de um servidor SFTP usando os recursos de transmissão do Auto Loader. Para obter detalhes sobre o uso do Auto Loader, consulte Padrões comuns de carregamento de dados.

Python
# Run the Auto Loader job to ingest all existing data in the SFTP server.
df = (spark.readStream.format("cloudFiles")
.option("cloudFiles.schemaLocation", "<path to store schema information>") # This is a cloud storage path
.option("cloudFiles.format", "csv") # Or other format supported by Auto Loader
# 1. $absolute_path_to_files should be the full server-side file system path
# relative to the root /, e.g. /home/$username/subdir/source/…
.load("sftp://$your_user@$your_host:$your_port/$absolute_path_to_files")
.writeStream
.format("delta")
.option("checkpointLocation", "<path to store checkpoint information>") # This is a cloud storage path.
.trigger(availableNow = True)
.table("<table name>"))
df.awaitTermination()

Os exemplos a seguir mostram como ler arquivos de um servidor SFTP usando Auto Loader em um pipeline declarativo LakeFlow Spark :

Python
import dlt

@dlt.table
def sftp_bronze_table():
return (spark.readStream.format("cloudFiles")
.option("cloudFiles.format", "csv") # Or other format supported by Auto Loader
# 1. $absolute_path_to_files should be the full server side file system path
# relative to the root /, for example /home/$username/subdir/source/…
.load("sftp://$your_user@$your_host:$your_port/$absolute_path_to_files"))

Configure as opções do Auto Loader. Todas as opções são suportadas, exceto:

  • cloudFiles.useNotifications
  • cloudFiles.useManagedFileEvents
  • cloudFiles.cleanSource
  • opções específicas da nuvem

Limitações

  • SFTP não é suportado em outras superfícies de ingestão, incluindo COPY INTO, spark.read e dbutils.ls.
  • Não há suporte para escrita de respostas em um servidor SFTP.
  • O Auto Loader cleanSource (excluir ou arquivar arquivos na origem após a ingestão) não é suportado.
  • O protocolo FTP não é suportado.

Perguntas frequentes

Encontre respostas para perguntas frequentes sobre o conector SFTP.

Como faço para usar caracteres curinga ou padrões de nomes de arquivos para selecionar os arquivos a serem ingeridos?

O conector SFTP utiliza a estrutura padrão do Auto Loader para ler dados de servidores SFTP. Isso significa que todas as opções do Auto Loader são suportadas. Para padrões de nomes de arquivos e curingas, use as opções pathGlobFilter ou fileNamePattern . Consulte as opçõesAuto Loader.

O conector SFTP consegue receber arquivos criptografados? (O PGP é suportado?)

O conector não descriptografa durante a transmissão, mas você pode importar os arquivos criptografados como arquivos binários e descriptografá-los após a importação.

Como faço para lidar com formatos key privada incompatíveis?

Somente o formato PEM é suportado. Você pode gerar uma key privada no formato PEM fazendo um dos seguintes procedimentos:

  • (Opção 1) Criar uma nova key RSA no formato PEM padrão:

    % ssh-keygen -t rsa -m pem
  • (Opção 2) Converter a key existente no formato OpenSSH para o formato PEM:

    % ssh-keygen -p -m pem -f /path/to/key  # This updates the key file.

Recursos adicionais