Udostępnij przez


Pobieranie plików z serwerów SFTP

Ważne

Łącznik SFTP jest w publicznej wersji zapoznawczej.

Dowiedz się, jak pozyskiwać pliki z serwerów SFTP przy użyciu programu Lakeflow Connect. Łącznik SFTP rozszerza funkcję Auto Loader, umożliwiając bezpieczne, przyrostowe pozyskiwanie danych z serwerów SFTP z zarządzaniem zgodnym z katalogiem Unity.

Kluczowe funkcje

Łącznik SFTP oferuje następujące elementy:

  • Uwierzytelnianie oparte na kluczu prywatnym i hasłach.
  • Pozyskiwanie i przetwarzanie plików przyrostowych z dokładnie jednokrotnymi gwarancjami.
  • Automatyczne wnioskowanie schematu, ewolucja i ratowanie danych.
  • Nadzór Unity Catalog na potrzeby bezpiecznego przyjmowania danych i poświadczeń.
  • Obsługa szerokiego formatu plików: JSON, , CSVXML, PARQUET, AVRO, TEXT, BINARYFILE, i ORC.
  • Wbudowana obsługa wzorców i znaków wieloznacznych, aby łatwo określić docelowe podzbiory danych.
  • Dostępność we wszystkich typach obliczeniowych, w tym deklaratywnych potokach Spark platformy Lakeflow, Databricks SQL, bezserwerowych i klasycznych w wersji Databricks Runtime 17.3 lub nowszej.

Zanim rozpoczniesz

Aby utworzyć połączenie i potok danych, musisz mieć następujące elementy:

  • Obszar roboczy z włączonym Unity Catalog.
  • CREATE CONNECTION Uprawnienia.
  • Środowisko obliczeniowe korzystające z środowiska Databricks Runtime w wersji 17.3 lub nowszej.

Konfigurowanie protokołu SFTP

Najpierw upewnij się, że źródłowy serwer SFTP jest dostępny dla środowiska klastra usługi Databricks:

  • Upewnij się, że zdalny serwer jest dostępny w VPC, który został skonfigurowany dla twojego obszaru roboczego.
  • Upewnij się, że reguły SSH zezwalają na zakres adresów IP protokołu VPC usługi Databricks (jeśli używasz klasycznego obliczenia) lub stabilnych adresów IP (jeśli używasz obliczeń bezserwerowych).
  • Z klasycznego środowiska obliczeniowego skonfiguruj stabilny adres IP z modułem równoważenia obciążenia, bramą NAT, bramą internetową lub innym równoważnym urządzeniem, i połącz go z podsiecią, w której środowisko obliczeniowe usługi Azure Databricks jest wdrażane. Dzięki temu zasób obliczeniowy może współużytkować stabilny publiczny adres IP, który można dodać do listy dozwolonych adresów po stronie serwera SFTP. Aby uzyskać instrukcje dotyczące konfigurowania ustawień sieci, zobacz Równorzędne sieci wirtualne.
  • Na płaszczyźnie obliczeniowej bezserwerowej zobacz Konfigurowanie prywatnej łączności z zasobami platformy Azure, aby uzyskać stabilny adres wychodzący IP.

Tworzenie połączenia

Utwórz połączenie do usługi Unity Catalog w celu przechowywania danych uwierzytelniających SFTP. Musisz mieć CREATE CONNECTION uprawnienia.

Łącznik obsługuje następujące metody uwierzytelniania:

  • Klucz prywatny PEM
  • Uwierzytelnianie oparte na hasłach

Usługa Databricks zaleca korzystanie z uwierzytelniania klucza prywatnego PEM. Usługa Databricks zaleca również używanie poświadczeń z najniższymi uprawnieniami na źródłowym serwerze SFTP (na przykład użytkownik niebędący użytkownikiem głównym ograniczonym do dostępu tylko do odczytu).

Podczas tworzenia potoku danych łącznik próbuje automatycznie znaleźć połączenie, którego można użyć i które jest zgodne z hostem. Jeśli istnieje wiele pasujących połączeń, łącznik wybiera pierwsze połączenie, które pomyślnie łączy się z hostem. Jednak usługa Databricks zaleca jawne określenie użytkownika. Dzięki temu łącznik nie wybierze połączenia dla innego użytkownika z dostępem do hosta.

Eksplorator wykazu

  1. W obszarze roboczym usługi Azure Databricks kliknij Katalog > Zewnętrzne połączenia danych>.

  2. Kliknij pozycję Utwórz połączenie.

  3. Na stronie Podstawowe informacje o połączeniu kreatora Konfigurowanie połączenia wprowadź unikatową nazwę połączenia.

  4. W polu Typ połączenia wybierz pozycję SFTP.

  5. W polu Typ uwierzytelniania wybierz pozycję Klucz prywatny PEM.

  6. Kliknij przycisk Dalej.

  7. Na stronie Uwierzytelnianie w polu Host wprowadź nazwę hosta obcego serwera.

  8. W polu Użytkownik wprowadź tożsamość użytkownika używaną do uzyskiwania dostępu do wystąpienia obcego.

  9. Kliknij przycisk Dalej.

  10. Na stronie Szczegóły połączenia wprowadź klucz prywatny w formacie PEM. Podaj również hasło klucza, jeśli ma to zastosowanie.

  11. Jeśli chcesz pominąć sprawdzanie odcisku palca klucza hosta, usuń zaznaczenie pozycji Wymuszaj odcisk palca klucza hosta.

    Po wybraniu tej opcji połączenie będzie kontynuowane tylko wtedy, gdy klucz publiczny serwera jest zgodny z oczekiwanym odciskiem palca SHA-256. Po wyłączeniu połączenie będzie kontynuowane niezależnie od dopasowania. Przed wyłączeniem tej opcji sprawdź się z administratorem sieci.

  12. Jeśli zaznaczono opcję Wymuszanie odcisku palca klucza hosta , wprowadź odcisk palca serwera SFTP.

    Można uzyskać odcisk klucza od administratora serwera lub za pomocą poleceń w konsoli. Możesz również nacisnąć pozycję Testuj i utworzyć test połączenia>. Wynikowy komunikat o błędzie zawiera odcisk palca. Przykład:

    ECDSA key fingerprint is SHA256:XXX/YYY

  13. Kliknij pozycję Testuj i utwórz połączenie.

  14. Jeśli połączenie zakończy się pomyślnie, kliknij przycisk Utwórz.

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...',
);

Uwierzytelnianie oparte na hasłach

Eksplorator wykazu

  1. W obszarze roboczym usługi Azure Databricks kliknij Katalog > Zewnętrzne połączenia danych>.

  2. Kliknij pozycję Utwórz połączenie.

  3. Na stronie Podstawowe informacje o połączeniu kreatora Konfigurowanie połączenia wprowadź unikatową nazwę połączenia.

  4. W polu Typ połączenia wybierz pozycję SFTP.

  5. W polu Typ uwierzytelniania wybierz pozycję Nazwa użytkownika i hasło.

  6. Kliknij przycisk Dalej.

  7. Na stronie Uwierzytelnianie w polu Host wprowadź nazwę hosta obcego serwera.

  8. W polu Użytkownik wprowadź tożsamość użytkownika używaną do uzyskiwania dostępu do wystąpienia obcego.

  9. W polu Hasło wprowadź hasło instancji zagranicznej.

  10. Kliknij przycisk Dalej.

  11. Jeśli chcesz pominąć sprawdzanie odcisku palca klucza hosta, usuń zaznaczenie pozycji Wymuszaj odcisk palca klucza hosta.

    Po wybraniu tej opcji połączenie będzie kontynuowane tylko wtedy, gdy klucz publiczny serwera jest zgodny z oczekiwanym odciskiem palca SHA-256. Po wyłączeniu połączenie będzie kontynuowane niezależnie od dopasowania. Przed wyłączeniem tej opcji sprawdź się z administratorem sieci.

  12. Jeśli zaznaczono opcję Wymuszanie odcisku palca klucza hosta , wprowadź odcisk palca serwera SFTP.

    Można uzyskać odcisk klucza od administratora serwera lub za pomocą poleceń w konsoli. Możesz również nacisnąć pozycję Testuj i utworzyć test połączenia>. Wynikowy komunikat o błędzie zawiera odcisk palca. Przykład:

    ECDSA key fingerprint is SHA256:XXX/YYY

  13. Kliknij pozycję Testuj i utwórz połączenie.

  14. Jeśli połączenie zakończy się pomyślnie, kliknij przycisk Utwórz.

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...',
);

Odczytywanie plików z serwera SFTP

W poniższych przykładach pokazano, jak odczytywać pliki z serwera SFTP przy użyciu funkcji przesyłania strumieniowego Auto Loader. Aby uzyskać szczegółowe informacje na temat użycia automatycznego modułu ładującego, zobacz Typowe wzorce ładowania danych.

# 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()

W poniższych przykładach pokazano, jak odczytywać pliki z serwera SFTP przy użyciu Auto Loader w deklaratywnych potokach 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"
)

Skonfiguruj opcje automatycznego modułu ładującego. Wszystkie opcje są obsługiwane z wyjątkiem:

  • cloudFiles.useNotifications
  • cloudFiles.useManagedFileEvents
  • cloudFiles.cleanSource
  • Opcje specyficzne dla chmury

Ograniczenia

  • Protokół SFTP nie jest obsługiwany na innych powierzchniach pozyskiwania, w tym COPY INTO, spark.readi dbutils.ls.
  • Zapisywanie z powrotem na serwerze SFTP nie jest obsługiwane.
  • Automatyczne ładowanie cleanSource (usuwanie lub archiwizowanie plików w źródle po załadowaniu) nie jest obsługiwane.
  • Protokół FTP nie jest obsługiwany.

Często zadawane pytania

Znajdź odpowiedzi na często zadawane pytania dotyczące łącznika SFTP.

Jak używać symboli wieloznacznych lub wzorców nazw plików do wybierania plików do importowania?

Łącznik SFTP opiera się na standardowej platformie Auto Loader do odczytu z serwerów SFTP. Oznacza to, że są obsługiwane wszystkie opcje modułu ładującego automatycznego. Użyj opcji pathGlobFilter lub fileNamePattern w przypadku wzorców nazw plików i symboli wieloznacznych. Zobacz Opcje modułu ładującego automatycznego.

Czy łącznik SFTP może pozyskiwać zaszyfrowane pliki? (Czy protokół PGP jest obsługiwany?)

Łącznik nie odszyfruje na bieżąco, ale można pobrać zaszyfrowane pliki w formacie binarnym i odszyfrować je po pobraniu.

Jak obsługiwać niezgodne formaty kluczy prywatnych?

Obsługiwany jest tylko format PEM. Klucz prywatny można wygenerować w formacie PEM, wykonując jedną z następujących czynności:

  • (Opcja 1) Utwórz nowy klucz RSA w standardowym formacie PEM:

    % ssh-keygen -t rsa -m pem
    
  • (Opcja 2) Przekonwertuj istniejący klucz formatu OpenSSH na format PEM:

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

Dodatkowe zasoby