Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Von Bedeutung
Der SFTP-Connector befindet sich in der öffentlichen Vorschau.
Erfahren Sie, wie Sie Dateien von SFTP-Servern mithilfe von Lakeflow Connect aufnehmen. Der SFTP-Connector erweitert die Funktionen für das automatische Laden, um eine sichere, inkrementelle Aufnahme von SFTP-Servern mit Unity Catalog Governance bereitzustellen.
Wichtigste Funktionen
Der SFTP-Connector bietet Folgendes:
- Private Schlüssel- und kennwortbasierte Authentifizierung.
- Inkrementelle Datenaufnahme und -verarbeitung mit genau einmaliger Garantie.
- Automatische Schemareferenz, Evolution und Datenrettung.
- Unity Catalog-Governance für sichere Datenaufnahme und Berechtigungen.
- Breite Unterstützung für Dateiformate:
JSON, ,CSVXMLPARQUETAVROTEXT, ,BINARYFILEund .ORC - Integrierte Unterstützung für Muster- und Platzhaltervergleich, um problemlos auf bestimmte Datenuntermengen zuzugreifen.
- Verfügbarkeit für alle Computetypen, einschließlich Lakeflow Spark Declarative Pipelines, Databricks SQL, serverless und klassisch mit Databricks Runtime 17.3 und höher.
Bevor Sie anfangen
Um die Verbindung und die Aufnahmepipeline zu erstellen, müssen Sie folgendes haben:
- Ein Arbeitsbereich, für den Unity Catalog aktiviert ist.
-
CREATE CONNECTIONPrivilegien. - Compute-Ressource, die Databricks Runtime Version 17.3 oder höher verwendet.
Konfigurieren von SFTP
Bestätigen Sie zunächst, dass der Source-SFTP-Server für Ihre Databricks-Clusterumgebung zugänglich ist.
- Stellen Sie sicher, dass der Remoteserver in der VPC verfügbar ist, die mit Ihrem Arbeitsbereich eingerichtet wurde.
- Stellen Sie sicher, dass Ihre SSH-Regeln den IP-Bereich der Databricks VPC (wenn Sie den klassischen Computing-Dienst verwenden) oder die stabilen IPs (wenn Sie den serverlosen Computing-Dienst verwenden) zulassen.
- Richten Sie auf der klassischen Computeebene eine stabile IP-Adresse mit einem Lastenausgleichsmodul, NAT Gateway, Internetgateway oder eine gleichwertige Ressource ein, und verbinden Sie sie mit dem Subnetz, in dem die Azure Databricks-Computeressourcen bereitgestellt werden. Auf diese Weise kann die Computeressource eine stabile öffentliche IP-Adresse freigeben, die auf der SFTP-Serverseite zugelassen werden kann. Anweisungen zum Konfigurieren von Netzwerkeinstellungen finden Sie unter Peer virtual networks.
- Informationen zur Serverlosen Computeebene finden Sie unter Konfigurieren der privaten Konnektivität mit Azure-Ressourcen , um eine stabile Egress-IP zu erhalten.
Erstellen der Verbindung
Erstellen Sie eine Unity-Katalogverbindung, um Ihre SFTP-Anmeldeinformationen zu speichern. Sie müssen über CREATE CONNECTION-Berechtigungen verfügen.
Der Connector unterstützt die folgenden Authentifizierungsmethoden:
- Privater PEM-Schlüssel
- Kennwortbasierte Authentifizierung
Databricks empfiehlt die Verwendung der PEM-Authentifizierung mit privaten Schlüsseln. Databricks empfiehlt auch die Verwendung von Anmeldeinformationen mit den geringsten Berechtigungen auf dem SFTP-Quellserver (z. B. ein Nicht-Stammbenutzer, der auf schreibgeschützten Zugriff beschränkt ist).
Wenn Sie die Pipeline erstellen, versucht der Connector, automatisch eine Verbindung zu finden, die Sie verwenden können und die dem Host entspricht. Wenn mehrere übereinstimmende Verbindungen vorhanden sind, wählt der Connector die erste Verbindung aus, die erfolgreich eine Verbindung mit dem Host herstellt. Databricks empfiehlt jedoch, den Benutzer explizit anzugeben. Dadurch wird sichergestellt, dass der Connector keine Verbindung für einen anderen Benutzer mit Hostzugriff auswäht.
Privater PEM-Schlüssel (empfohlen)
Katalog-Explorer
Wählen Sie im Azure Databricks-Arbeitsbereich Katalog > Externe Daten > Verbindungen aus.
Klicken Sie auf Verbindung herstellen.
Geben Sie auf der Seite "Verbindungsgrundlagen" des Verbindungs-Assistenten einen eindeutigen Verbindungsnamen ein.
Wählen Sie für den VerbindungstypSFTP aus.
Wählen Sie für den Authentifizierungstypden privaten PEM-Schlüssel aus.
Klicke auf Weiter.
Geben Sie auf der Seite " Authentifizierung " für "Host" den Hostnamen des fremden Servers ein.
Geben Sie für "Benutzer" die Benutzeridentität ein, die für den Zugriff auf die fremde Instanz verwendet wird.
Klicke auf Weiter.
Geben Sie auf der Seite "Verbindungsdetails " den privaten Schlüssel im PEM-Format ein. Geben Sie ggf. auch die Schlüsselpassphrase an.
Wenn Sie die Fingerabdrucküberprüfung des Hostschlüssels überspringen möchten, deaktivieren Sie die Option "Hostschlüsselfingerabdruck erzwingen".
Wenn dies ausgewählt ist, wird die Verbindung nur fortgesetzt, wenn der öffentliche Schlüssel des Servers mit dem erwarteten SHA-256-Fingerabdruck übereinstimmt. Wenn die Verbindung deaktiviert ist, wird die Verbindung unabhängig von der Übereinstimmung fortgesetzt. Wenden Sie sich an Ihren Netzwerkadministrator, bevor Sie dies deaktivieren.
Wenn Hostschlüsselfingerabdruck erzwingen aktiviert ist, geben Sie den SFTP-Serverfingerabdruck ein.
Sie können den Fingerabdruck von Ihrem Serveradministrator oder mithilfe von CLI-Befehlen abrufen. Sie können auch "Test" drücken und "Verbindungstest>" erstellen. Die resultierende Fehlermeldung stellt den Fingerabdruck bereit. Beispiel:
ECDSA key fingerprint is SHA256:XXX/YYYKlicken Sie auf "Testen", und erstellen Sie die Verbindung.
Wenn die Verbindung erfolgreich ist, klicken Sie auf "Erstellen".
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...',
);
Kennwortbasierte Authentifizierung
Katalog-Explorer
Wählen Sie im Azure Databricks-Arbeitsbereich Katalog > Externe Daten > Verbindungen aus.
Klicken Sie auf Verbindung herstellen.
Geben Sie auf der Seite "Verbindungsgrundlagen" des Verbindungs-Assistenten einen eindeutigen Verbindungsnamen ein.
Wählen Sie für den VerbindungstypSFTP aus.
Wählen Sie für den Authentifizierungstyp"Benutzername" und "Kennwort" aus.
Klicke auf Weiter.
Geben Sie auf der Seite " Authentifizierung " für "Host" den Hostnamen des fremden Servers ein.
Geben Sie für "Benutzer" die Benutzeridentität ein, die für den Zugriff auf die fremde Instanz verwendet wird.
Geben Sie für "Kennwort" das Kennwort der fremden Instanz ein.
Klicke auf Weiter.
Wenn Sie die Fingerabdrucküberprüfung des Hostschlüssels überspringen möchten, deaktivieren Sie die Option "Hostschlüsselfingerabdruck erzwingen".
Wenn dies ausgewählt ist, wird die Verbindung nur fortgesetzt, wenn der öffentliche Schlüssel des Servers mit dem erwarteten SHA-256-Fingerabdruck übereinstimmt. Wenn die Verbindung deaktiviert ist, wird die Verbindung unabhängig von der Übereinstimmung fortgesetzt. Wenden Sie sich an Ihren Netzwerkadministrator, bevor Sie dies deaktivieren.
Wenn Hostschlüsselfingerabdruck erzwingen aktiviert ist, geben Sie den SFTP-Serverfingerabdruck ein.
Sie können den Fingerabdruck von Ihrem Serveradministrator oder mithilfe von CLI-Befehlen abrufen. Sie können auch "Test" drücken und "Verbindungstest>" erstellen. Die resultierende Fehlermeldung stellt den Fingerabdruck bereit. Beispiel:
ECDSA key fingerprint is SHA256:XXX/YYYKlicken Sie auf "Testen", und erstellen Sie die Verbindung.
Wenn die Verbindung erfolgreich ist, klicken Sie auf "Erstellen".
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...',
);
Lesen von Dateien vom SFTP-Server
Die folgenden Beispiele zeigen, wie Dateien vom SFTP-Server mithilfe der Streamingfunktionen des automatischen Ladeprogramms gelesen werden. Ausführliche Informationen zur Verwendung des automatischen Ladevorgangs finden Sie unter Allgemeine Datenlademuster.
# 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()
Die folgenden Beispiele zeigen, wie Sie Dateien von einem SFTP-Server mithilfe von Auto Loader in Lakeflow Spark Declarative Pipelines lesen:
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"
)
Konfigurieren der Optionen für das automatische Laden. Alle Optionen werden unterstützt, außer:
cloudFiles.useNotificationscloudFiles.useManagedFileEventscloudFiles.cleanSource- Cloudspezifische Optionen
Einschränkungen
- SFTP wird nicht auf anderen Aufnahmeoberflächen unterstützt, einschließlich
COPY INTO,spark.readunddbutils.ls. - Das Zurückschreiben auf einen SFTP-Server wird nicht unterstützt.
- Auto Loader
cleanSource(Löschen oder Archivieren von Dateien an der Quelle nach der Einspeisung) wird nicht unterstützt. - Das FTP-Protokoll wird nicht unterstützt.
Häufig gestellte Fragen
Hier finden Sie Antworten auf häufig gestellte Fragen zum SFTP-Connector.
Wie verwende ich Wildcards oder Dateinamenmuster, um Dateien auszuwählen, die aufgenommen werden sollen?
Der SFTP-Connector baut auf dem standardmäßigen Auto Loader-Framework auf, um von SFTP-Servern zu lesen. Dies bedeutet, dass alle Optionen für das automatische Laden unterstützt werden. Verwenden Sie für Dateinamenmuster und Wildcards die pathGlobFilter- oder fileNamePattern-Option. Weitere Informationen finden Sie unter "Optionen für das automatische Laden".
Kann der SFTP-Connector verschlüsselte Dateien aufnehmen? (Wird PGP unterstützt?)
Der Connector entschlüsselt nicht während des Transfers, aber Sie können die verschlüsselten Dateien als Binärdateien importieren und nach dem Import entschlüsseln.
Wie kann ich inkompatible Private Key-Formate behandeln?
Nur das PEM-Format wird unterstützt. Sie können einen privaten Schlüssel im PEM-Format generieren, indem Sie eine der folgenden Aktionen ausführen:
(Option 1) Erstellen Sie einen neuen RSA-Schlüssel im PEM-Standardformat:
% ssh-keygen -t rsa -m pem(Option 2) Konvertieren Sie den vorhandenen OpenSSH-Formatschlüssel in das PEM-Format:
% ssh-keygen -p -m pem -f /path/to/key # This updates the key file.