Aracılığıyla paylaş


SFTP sunucularından dosya alma

Önemli

SFTP bağlayıcısı Genel Önizleme aşamasındadır.

Lakeflow Connect kullanarak SFTP sunucularından dosya almayı öğrenin. SFTP bağlayıcısı, Unity Catalog denetimiyle SFTP sunucularından güvenli, aşamalı veri alımı sağlamak için Otomatik Yükleyici işlevselliğini genişletir.

Temel özellikler

SFTP bağlayıcısı aşağıdakileri sunar:

  • Özel anahtar ve parola tabanlı kimlik doğrulaması.
  • Artımlı dosya alımı ve tam olarak bir kez garantili işleme.
  • Otomatik şema çıkarımı, evrimi ve veri kurtarma.
  • Unity Kataloğu'nun güvenli veri alma ve kimlik doğrulama bilgileri yönetişimi.
  • Geniş dosya biçimi desteği: JSON, CSV, XML, PARQUET, AVRO, , TEXT, BINARYFILEve ORC.
  • Veri alt kümelerini kolayca hedeflemek için yerleşik desen ve joker karakter eşleştirme desteği.
  • Lakeflow Spark Bildirimli İşlem Hatları, Databricks SQL, sunucusuz ve klasik ve Databricks Runtime 17.3 ve üstü dahil olmak üzere tüm işlem türlerinde kullanılabilirlik.

Başlamadan önce

Bağlantıyı ve alma işlem hattını oluşturmak için aşağıdakilere sahip olmanız gerekir:

  • Unity Kataloğu'nu etkinleştirmiş bir çalışma alanı.
  • CREATE CONNECTION Ayrıcalıklar.
  • Databricks Runtime sürüm 17.3 veya üstünü kullanan hesaplama.

SFTP'yi yapılandırma

İlk olarak, kaynak SFTP sunucusunun Databricks küme ortamınız için erişilebilir olduğunu onaylayın:

  • Uzak sunucunun çalışma alanınızla yapılandırılan VPC'de kullanılabilir olduğundan emin olun.
  • SSH kurallarınızın Databricks VPC'nin IP aralığına (klasik işlem kullanıyorsanız) veya kararlı IP'lere (sunucusuz işlem kullanıyorsanız) izin verin.
  • Klasik işlem düzleminden yük dengeleyici, NAT ağ geçidi, internet ağ geçidi veya eşdeğeri olan kararlı bir IP adresi ayarlayın ve bunu Azure Databricks işleminin dağıtıldığı alt ağa bağlayın. Bu, işlem kaynağının SFTP sunucu tarafında izin verilenler listesinde yer alan kararlı bir genel IP adresini paylaşmasına olanak tanır. Ağ ayarlarını yapılandırma yönergeleri için bkz . Sanal ağları eşleme.
  • Sunucusuz işlem düzleminden kararlı çıkış IP'si almak için Azure kaynaklarına özel bağlantı yapılandırma bölümüne bakın.

Bağlantıyı oluşturun

SFTP kimlik bilgilerinizi depolamak için Unity Kataloğu bağlantısı oluşturun. CREATE CONNECTION Ayrıcalıklarına sahip olmalısınız.

Bağlayıcı aşağıdaki kimlik doğrulama yöntemlerini destekler:

  • PEM özel anahtarı
  • Parola tabanlı kimlik doğrulaması

Databricks, PEM özel anahtar kimlik doğrulamasının kullanılmasını önerir. Databricks ayrıca, kaynak SFTP sunucusunda en az ayrıcalığa sahip kimlik bilgileri kullanmayı (örneğin, salt okunur erişimle sınırlı, root olmayan bir kullanıcı) önerir.

İşlem hattını oluşturduğunuzda bağlayıcı, kullanabileceğiniz ve konakla eşleşen bir bağlantıyı otomatik olarak bulmaya çalışır. Birden çok eşleşen bağlantı varsa bağlayıcı, konağa başarıyla bağlanan ilk bağlantıyı seçer. Ancak Databricks, kullanıcıyı açıkça belirtmenizi önerir. Bu, bağlayıcının konak erişimi olan başka bir kullanıcı için bağlantı seçmemesini sağlar.

Katalog Tarayıcısı

  1. Azure Databricks çalışma alanında Katalog > Dış Veri > Bağlantıları'na tıklayın.

  2. Bağlantı oluştur'a tıklayın.

  3. Bağlantı ayarlama sihirbazının Bağlantı temel bilgileri sayfasında benzersiz bir Bağlantı adı girin.

  4. Bağlantı türü içinSFTP'yi seçin.

  5. Kimlik doğrulama türü için PEM Özel Anahtarı'yı seçin.

  6. Nextöğesine tıklayın.

  7. Kimlik Doğrulaması sayfasında, Konak için yabancı sunucunun ana bilgisayar adını girin.

  8. Kullanıcı için, yabancı örneğe erişmek için kullanılan kullanıcı kimliğini girin.

  9. Nextöğesine tıklayın.

  10. Bağlantı ayrıntıları sayfasında pem biçiminde özel anahtarı girin. Varsa anahtar parolasını da belirtin.

  11. Konak anahtarı parmak izi denetimini atlamak istiyorsanız Konak anahtarı parmak izini zorla seçiminin işaretini kaldırın.

    Bu seçildiğinde, bağlantı yalnızca sunucunun ortak anahtarı beklenen SHA-256 parmak iziyle eşleşiyorsa devam eder. Devre dışı bırakıldığında, bağlantı eşleşmeden bağımsız olarak devam eder. Bunu devre dışı bırakmadan önce ağ yöneticinize danışın.

  12. Ana bilgisayar anahtar parmak izini zorunlu kıl işaretliyse, SFTP sunucusu parmak izini girin.

    Parmak izini sunucu yöneticinizden veya CLI komutlarını kullanarak alabilirsiniz. Ayrıca Test tuşuna basabilir ve bağlantı>Testi oluşturabilirsiniz. Sonuçta elde edilen hata iletisi parmak izini sağlar. Örneğin:

    ECDSA key fingerprint is SHA256:XXX/YYY

  13. Test et ve bağlantı oluştur'a tıklayın.

  14. Bağlantı başarılı olursa Oluştur'a tıklayın.

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

Parola tabanlı kimlik doğrulaması

Katalog Tarayıcısı

  1. Azure Databricks çalışma alanında Katalog > Dış Veri > Bağlantıları'na tıklayın.

  2. Bağlantı oluştur'a tıklayın.

  3. Bağlantı ayarlama sihirbazının Bağlantı temel bilgileri sayfasında benzersiz bir Bağlantı adı girin.

  4. Bağlantı türü içinSFTP'yi seçin.

  5. Kimlik doğrulaması türü içinKullanıcı adı ve parola'yı seçin.

  6. Nextöğesine tıklayın.

  7. Kimlik Doğrulaması sayfasında, Konak için yabancı sunucunun ana bilgisayar adını girin.

  8. Kullanıcı için, yabancı örneğe erişmek için kullanılan kullanıcı kimliğini girin.

  9. Parola alanına yabancı örneğin parolasını girin.

  10. Nextöğesine tıklayın.

  11. Konak anahtarı parmak izi denetimini atlamak istiyorsanız Konak anahtarı parmak izini zorla seçiminin işaretini kaldırın.

    Bu seçildiğinde, bağlantı yalnızca sunucunun ortak anahtarı beklenen SHA-256 parmak iziyle eşleşiyorsa devam eder. Devre dışı bırakıldığında, bağlantı eşleşmeden bağımsız olarak devam eder. Bunu devre dışı bırakmadan önce ağ yöneticinize danışın.

  12. Ana bilgisayar anahtar parmak izini zorunlu kıl işaretliyse, SFTP sunucusu parmak izini girin.

    Parmak izini sunucu yöneticinizden veya CLI komutlarını kullanarak alabilirsiniz. Ayrıca Test tuşuna basabilir ve bağlantı>Testi oluşturabilirsiniz. Sonuçta elde edilen hata iletisi parmak izini sağlar. Örneğin:

    ECDSA key fingerprint is SHA256:XXX/YYY

  13. Test et ve bağlantı oluştur'a tıklayın.

  14. Bağlantı başarılı olursa Oluştur'a tıklayın.

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

SFTP sunucusundan dosyaları okuma

Aşağıdaki örneklerde, Otomatik Yükleyici'nin akış özelliklerini kullanarak SFTP sunucusundan dosyaların nasıl okunduğu gösterilmektedir. Otomatik Yükleyici kullanımı hakkında ayrıntılı bilgi için bkz. Yaygın veri yükleme desenleri.

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

Aşağıdaki örneklerde, Lakeflow Spark Bildirimli İşlem Hatlarında Otomatik Yükleyici kullanılarak bir SFTP sunucusundan dosyaların nasıl okunduğu gösterilmektedir:

Piton

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"
)

Otomatik Yükleyici seçeneklerini yapılandırın. Aşağıdakiler dışında tüm seçenekler desteklenir:

  • cloudFiles.useNotifications
  • cloudFiles.useManagedFileEvents
  • cloudFiles.cleanSource
  • Buluta özgü seçenekler

Sınırlamalar

  • SFTP, COPY INTO, spark.read ve dbutils.ls dahil olmak üzere diğer alım yüzeylerinde desteklenmez.
  • SFTP sunucusuna geri yazma desteklenmez.
  • Otomatik Yükleyici cleanSource (alma işleminden sonra kaynakta dosyaları silme veya arşivleme) desteklenmez.
  • FTP protokolü desteklenmez.

FAQ

SFTP bağlayıcısı hakkında sık sorulan soruların yanıtlarını bulun.

Alınacak dosyaları seçmek için joker karakterleri veya dosya adı desenlerini nasıl kullanabilirim?

SFTP bağlayıcısı, SFTP sunucularından okuma işlemi için standart Otomatik Yükleyici çerçevesine dayanır. Bu, tüm Otomatik Yükleyici seçeneklerinin desteklendiği anlamına gelir. Dosya adı desenleri ve joker karakterler için pathGlobFilter veya fileNamePattern seçeneklerini kullanın. Bkz. Otomatik Yükleyici seçenekleri.

SFTP bağlayıcısı şifrelenmiş dosyaları alabilir mi? (PGP destekleniyor mu?)

Bağlayıcının şifresi uçuş sırasında çözülmez, ancak şifrelenmiş dosyaları ikili dosya olarak alabilir ve alımdan sonra şifrelerini çözebilirsiniz.

Uyumsuz özel anahtar biçimlerini nasıl işleyebilirim?

Yalnızca PEM biçimi desteklenir. Aşağıdakilerden birini yaparak PEM biçiminde bir özel anahtar oluşturabilirsiniz:

  • (Seçenek 1) Standart PEM biçiminde yeni bir RSA anahtarı oluşturun:

    % ssh-keygen -t rsa -m pem
    
  • (Seçenek 2) Mevcut OpenSSH biçim anahtarını PEM biçimine dönüştürün:

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

Ek kaynaklar