Как загрузить текстовый файл на FTP из записной книжки Databricks - PullRequest
0 голосов
/ 25 октября 2019

Я пытался найти решение, но ничего. Я новичок в этом, поэтому, пожалуйста, помогите мне, если вы знаете решение. Спасибо!

Ответы [ 2 ]

1 голос
/ 31 октября 2019
Ok, I found a solution.

#copy file from ADLS to SFTP
from ftplib import FTP_TLS
from azure.datalake.store import core, lib, multithread
import pandas as pd

keyVaultName = "yourkeyvault"
#then you need to configure keyvault with ADLS

#set up authentification for ADLS
tenant_id = dbutils.secrets.get(scope = keyVaultName, key = "tenantId")
username = dbutils.secrets.get(scope = keyVaultName, key = "appRegID")
password = dbutils.secrets.get(scope = keyVaultName, key = "appRegSecret")
store_name = 'ADLSStoridge'
token = lib.auth(tenant_id = tenant_id, client_id = username, client_secret = password)
adl = core.AzureDLFileSystem(token, store_name=store_name)

#create secure connection with SFTP
ftp = FTP_TLS('ftp.xyz.com')
#add credentials
ftp.login(user='',passwd='') 
ftp.prot_p()
#set sftp directory path
ftp.cwd('folder path on FTP')

#load file
f = adl.open('adls path of your file')
#write to SFTP
ftp.storbinary('STOR myfile.csv', f)
0 голосов
/ 31 октября 2019

В Databricks вы можете получить доступ к файлам, хранящимся в ADLS, используя любой из методов, описанных ниже. Существует три способа доступа к хранилищу озера данных Azure Gen2:

  1. Монтирование файловой системы хранилища озера данных Azure Gen2 в DBFS с использованием субъекта службы и OAuth 2.0.
  2. Использование субъекта службы напрямую.
  3. Используйте непосредственно ключ доступа к учетной записи хранилища Azure Data Lake Storage Gen2.

Действия для подключения и доступа к файлам в вашей файловой системе, как если бы они были локальными файлами:

Чтобы подключить хранилище озера данных Azure Gen2 или папку внутри контейнера, используйте следующую команду:

Синтаксис:

configs = {"fs.azure.account.auth.type": "OAuth",
       "fs.azure.account.oauth.provider.type": "org.apache.hadoop.fs.azurebfs.oauth2.ClientCredsTokenProvider",
       "fs.azure.account.oauth2.client.id": "<appId>",
       "fs.azure.account.oauth2.client.secret": "<password>",
       "fs.azure.account.oauth2.client.endpoint": "https://login.microsoftonline.com/<tenant>/oauth2/token",
       "fs.azure.createRemoteFileSystemDuringInitialization": "true"}

dbutils.fs.mount(
source = "abfss://<container-name>@<storage-account-name>.dfs.core.windows.net/folder1",
mount_point = "/mnt/flightdata",
extra_configs = configs)

Пример:

enter image description here

После монтирования ADLS вы можете получить доступ к вашей файловой системе, как если бы они были локальными файлами, например:

df = spark.read.csv("/mnt/flightdata/flightdata.csv", header="true")
display(df)

Пример:

enter image description here

Ссылка: Блоки данных - хранилище озера данных Azure Gen2 .

Надеюсь, это поможет.

...