Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Important
Le connecteur SFTP est en préversion publique.
Découvrez comment ingérer des fichiers à partir de serveurs SFTP à l’aide de Lakeflow Connect. Le connecteur SFTP étend la fonctionnalité Auto Loader pour fournir une ingestion sécurisée et incrémentielle à partir de serveurs SFTP avec la gouvernance Unity Catalog.
Fonctionnalités clés
Le connecteur SFTP offre les éléments suivants :
- Authentification par clé privée et par mot de passe.
- Ingestion et traitement de fichiers de manière incrémentielle avec des garanties d'exécution une seule fois.
- Inférence de schéma automatique, évolution et sauvetage des données.
- Gouvernance du catalogue Unity pour l’ingestion de données et les identifiants sécurisés.
- Prise en charge de nombreux formats de fichiers :
JSON,CSV,XML,PARQUET,AVRO,TEXT,BINARYFILEetORC. - Prise en charge intégrée du modèle et des correspondances génériques pour cibler facilement des sous-ensembles de données.
- Disponibilité sur tous les types de calcul, y compris Databricks SQL, les pipelines déclaratifs Lakeflow Spark, sans serveur et classique avec Databricks Runtime 17.3 et supérieur.
Avant de commencer
Pour créer la connexion et le pipeline d’ingestion, vous devez disposer des éléments suivants :
- Un espace de travail avec le catalogue Unity activé.
-
CREATE CONNECTIONPrivilèges. - Calcul qui utilise Databricks Runtime version 17.3 ou ultérieure.
Configurer SFTP
Tout d’abord, vérifiez que le serveur SFTP source est accessible à votre environnement de cluster Databricks :
- Vérifiez que le serveur distant est disponible dans le VPC qui a été configuré avec votre espace de travail.
- Assurez-vous que vos règles SSH autorisent la plage d’adresses IP du VPC Databricks (si vous utilisez le calcul classique) ou les adresses IP stables (si vous utilisez le calcul serverless).
- À partir du plan de calcul classique, configurez une adresse IP stable avec un équilibreur de charge, une passerelle NAT, une passerelle Internet ou un équivalent, et connectez-la au sous-réseau où un calcul Azure Databricks est déployé. Cela permet à la ressource de calcul de partager une adresse IP publique stable qui peut être autorisée côté serveur SFTP. Pour obtenir des instructions sur la configuration des paramètres réseau, consultez Réseaux virtuels homologues.
- À partir du plan de calcul serverless, consultez Configurer la connectivité privée aux ressources Azure pour obtenir une adresse IP de sortie stable.
Créer la connexion
Créez une connexion de catalogue Unity pour stocker vos informations d’identification SFTP. Vous devez disposer de CREATE CONNECTION privilèges.
Le connecteur prend en charge les méthodes d’authentification suivantes :
- Clé privée PEM
- L’authentification basée sur un mot de passe
Databricks recommande d’utiliser l’authentification par clé privée PEM. Databricks recommande également d’utiliser des informations d’identification avec le privilège minimum sur le serveur SFTP source (par exemple, un utilisateur non racine limité à l’accès en lecture seule).
Lorsque vous créez le pipeline, le connecteur tente de trouver automatiquement une connexion que vous pouvez utiliser et qui correspond à l’hôte. S’il existe plusieurs connexions correspondantes, le connecteur choisit la première connexion qui se connecte correctement à l’hôte. Toutefois, Databricks vous recommande de spécifier explicitement l’utilisateur. Cela garantit que le connecteur ne choisit pas de connexion pour un autre utilisateur disposant d’un accès hôte.
Clé privée PEM (recommandé)
Explorateur de catalogues
Dans l’espace de travail Azure Databricks, cliquez sur Catalogue > Données externes > Connexions.
Cliquez sur Create connection (Créer la connexion).
Dans la page Principes de base de la connexion de l’Assistant de configuration de la connexion, entrez un nom de connexion unique.
Pour le type de connexion , sélectionnez SFTP.
Pour le type d’authentification, sélectionnez Clé privée PEM.
Cliquez sur Suivant.
Dans la page Authentification , pour l’hôte, entrez le nom d’hôte du serveur étranger.
Pour l’utilisateur, entrez l’identité de l’utilisateur utilisée pour accéder à l’instance étrangère.
Cliquez sur Suivant.
Dans la page Détails de la connexion, entrez la clé privée au format PEM. Fournissez également la phrase secrète de clé, le cas échéant.
Si vous souhaitez ignorer la vérification des empreintes digitales de la clé hôte, désélectionnez Appliquer l’empreinte digitale de la clé hôte.
Lorsque cette option est sélectionnée, la connexion se poursuit uniquement si la clé publique du serveur correspond à l’empreinte SHA-256 attendue. Lorsqu’elle est désactivée, la connexion se poursuit quelle que soit la correspondance. Contactez votre administrateur réseau avant de le désactiver.
Si Enforcer l’empreinte digitale de la clé hôte est sélectionnée, entrez l’empreinte digitale du serveur SFTP.
Vous pouvez récupérer l’empreinte digitale de votre administrateur de serveur ou à l’aide de commandes CLI. Vous pouvez également appuyer sur Test et créer un test de connexion>. Le message d’erreur résultant fournit l’empreinte digitale. Par exemple:
ECDSA key fingerprint is SHA256:XXX/YYYCliquez sur Tester et créer une connexion.
Si la connexion réussit, cliquez sur Créer.
SQL
-- Create a connection using a username and SSH private key.
CREATE CONNECTION my_sftp_connection
TYPE sftp
OPTIONS (
host 'my.sftpserver.com',
-- The following credentials can also be used in-line, but Databricks recommends
-- accessing them using the secrets scope.
user secret('my_secret_scope','my_sftp_username'),
pem_private_key secret('my_secret_scope','my_sftp_private_key'),
-- Port for the host
port '22',
-- Passphrase for the private key (optional).
pem_key_passphrase secret('my_secret_scope','my_sftp_private_key_passphrase'),
-- SFTP server fingerprint. You can retrieve this from your server administrator or using CLI commands.
key_fingerprint 'SHA256:ASampleFingerprintValueZy...',
);
L’authentification basée sur un mot de passe
Explorateur de catalogues
Dans l’espace de travail Azure Databricks, cliquez sur Catalogue > Données externes > Connexions.
Cliquez sur Create connection (Créer la connexion).
Dans la page Principes de base de la connexion de l’Assistant de configuration de la connexion, entrez un nom de connexion unique.
Pour le type de connexion , sélectionnez SFTP.
Pour le type d’authentification, sélectionnez Nom d’utilisateur et mot de passe.
Cliquez sur Suivant.
Dans la page Authentification , pour l’hôte, entrez le nom d’hôte du serveur étranger.
Pour l’utilisateur, entrez l’identité de l’utilisateur utilisée pour accéder à l’instance étrangère.
Pour mot de passe, entrez le mot de passe de l’instance étrangère.
Cliquez sur Suivant.
Si vous souhaitez ignorer la vérification des empreintes digitales de la clé hôte, désélectionnez Appliquer l’empreinte digitale de la clé hôte.
Lorsque cette option est sélectionnée, la connexion se poursuit uniquement si la clé publique du serveur correspond à l’empreinte SHA-256 attendue. Lorsqu’elle est désactivée, la connexion se poursuit quelle que soit la correspondance. Contactez votre administrateur réseau avant de le désactiver.
Si Enforcer l’empreinte digitale de la clé hôte est sélectionnée, entrez l’empreinte digitale du serveur SFTP.
Vous pouvez récupérer l’empreinte digitale de votre administrateur de serveur ou à l’aide de commandes CLI. Vous pouvez également appuyer sur Test et créer un test de connexion>. Le message d’erreur résultant fournit l’empreinte digitale. Par exemple:
ECDSA key fingerprint is SHA256:XXX/YYYCliquez sur Tester et créer une connexion.
Si la connexion réussit, cliquez sur Créer.
SQL
-- Create a connection using a username and password.
CREATE CONNECTION my_sftp_connection
TYPE sftp
OPTIONS (
host 'my.sftpserver.com',
user secret('my_secret_scope','my_sftp_username'),
password secret('my_secret_scope','my_sftp_password'),
-- Port for the host.
port '22',
-- SFTP server fingerprint. You can retrieve this from your server administrator or using CLI commands.
key_fingerprint 'SHA256:ASampleFingerprintValueZy...',
);
Lire des fichiers à partir du serveur SFTP
Les exemples suivants montrent comment lire des fichiers à partir du serveur SFTP à l’aide des fonctionnalités de streaming du chargeur automatique. Pour plus d’informations sur l’utilisation du chargeur automatique, consultez Modèles de chargement de données courants.
# 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
# Specify the absolute path on the SFTP server starting from the root /.
# Example: /home/<username>/data/files or /uploads/csv_files
.load("sftp://<username>@<host>:<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()
Les exemples suivants montrent comment lire des fichiers à partir d’un serveur SFTP à l’aide du chargeur automatique dans les pipelines déclaratifs Spark Lakeflow :
Python
from pyspark import pipelines as dp
@dp.table
def sftp_bronze_table():
return (spark.readStream.format("cloudFiles")
.option("cloudFiles.format", "csv") # Or other format supported by Auto Loader
# Specify the absolute path on the SFTP server starting from the root /.
# Example: /home/username/data/files or /uploads/csv_files
.load("sftp://<username>@<host>:<port>/<absolute_path_to_files>")))
SQL
CREATE OR REFRESH STREAMING TABLE sftp_bronze_table
AS SELECT * FROM STREAM read_files(
"sftp://<username>@<host>:<port>/<absolute_path_to_files>",
format => "csv"
)
Configurer les options du chargeur automatique. Toutes les options sont prises en charge, sauf :
cloudFiles.useNotificationscloudFiles.useManagedFileEventscloudFiles.cleanSource- Options spécifiques au cloud
Limites
- SFTP n’est pas pris en charge sur d’autres surfaces d’ingestion, notamment
COPY INTO,spark.readetdbutils.ls. - L’écriture sur un serveur SFTP n’est pas prise en charge.
- Le chargeur
cleanSourceautomatique (suppression ou archivage de fichiers à la source après l’ingestion) n’est pas pris en charge. - Le protocole FTP n’est pas pris en charge.
Questions fréquentes (FAQ)
Trouvez des réponses aux questions fréquemment posées sur le connecteur SFTP.
Comment utiliser des caractères génériques ou des modèles de nom de fichier pour sélectionner des fichiers à ingérer ?
Le connecteur SFTP s’appuie sur l’infrastructure de chargeur automatique standard pour lire à partir de serveurs SFTP. Cela signifie que toutes les options de chargeur automatique sont prises en charge. Pour les modèles de nom de fichier et les caractères génériques, utilisez les options pathGlobFilter ou fileNamePattern. Consultez les options du chargeur automatique.
Le connecteur SFTP peut-il ingérer des fichiers chiffrés ? (Le protocole PGP est-il pris en charge ?)
Le connecteur ne déchiffre pas les données en transit, mais vous pouvez ingérer les fichiers chiffrés sous forme de fichiers binaires et les déchiffrer après l'ingestion.
Comment gérer les formats de clé privée incompatibles ?
Seul le format PEM est pris en charge. Vous pouvez générer une clé privée au format PEM en effectuant l’une des opérations suivantes :
(Option 1) Créez une clé RSA au format PEM standard :
% ssh-keygen -t rsa -m pem(Option 2) Convertissez la clé de format OpenSSH existante au format PEM :
% ssh-keygen -p -m pem -f /path/to/key # This updates the key file.