Необходимо пройти путь:
Регистрация (Вход) - Clusters - Create Cluster - Выбрать нужные параметры - Установить Config / Переменные среды - Запустить кластер - использовать
-
Для создания кластера, необходимо перейти на сайт DataBricks и пройти регистрациию.
-
Welcome страница DataBricks
- Перейдите на вкладку Clusters
- Выбрать
Create Cluster
- Установить нужные параметры: имя кластера, выбрать
DataBricks Runtime
(т.е. доступную среду)
- Если необходимо, то вы можете указать Spark Config и переменные среды до запуска кластера
- Запустите созданный кластер
- Создайте Jupyter Notebook на кластере и начинайте использовать
dbutils.fs
позволяет работать с файловой системой (основной доступ к файлам ``/fooравнозначен
dbfs:/foo`)
Доступны команды (равнозначны Linux/Hadoop):
dbutils.fs.help("methodName")
- получить описание методаdbutils.fs.head("/file/path", maxBytes = 10000)
- показать первые строки файлаdbutils.fs.cp(from, to, recurse = false)
- копирование директорииdbutils.fs.mkdir(path/dir)
- создать директориюdbutils.fs.put(file, contents, overwrite)
- загрузить данныеdbutils.fs.rm(path, recurse)
- удалить файл
Доступные команды для монтирования внешних хранилищ:
mount(source, mountPoint, encryptionType = "", owner = null, extraConfigs = Map.empty)
- монтирование в выбраную директорию DBFSmount
- показать все директории в DBFS- refreshMounts` - перезапустить кэш и переустановить все монтирования
unmount(mountPoint
) - удалить хранилище
# монитирование "transactions" хранилища
dbutils.fs.mount(
source = f'abfss://transactions@{account_name}.dfs.core.windows.net/',
mount_point = f'/mnt/transactions',
extra_configs = configs)
# список всех директорий
display(dbutils.fs.ls('/mnt'))
# список всех директорий по определенному пути
display(dbutils.fs.ls('/mnt/transactions/2020'))
# создание новой директории
dbutils.fs.mkdirs('/mnt/transactions/2020/p14')
# проверяем
display(dbutils.fs.ls('/mnt/transactions/2020'))
# удаляем директорию
dbutils.fs.rm('/mnt/transactions/2020/p14', recurse=True)
# SQL query
jdbcHostname = '<server name>.database.windows.net'
jdbcDatabase = '<database name>'
userName = '<user name>'
password = '<password>'
jdbcPort = 1433
jdbcUrl = f'jdbc:sqlserver://{jdbcHostname}:{jdbcPort};database={jdbcDatabase};user={userName};password={password}'
df = spark.read.jdbc(url=jdbcUrl, table='<table name>')
display(df)
Рассмотрим пример подключения сторонних источников на примере Azur.
Вам понадобится:
- создать AD в Azur
- получить application-id:
- получить directory-id
- получить storage-account-name
- получитьservice-credential
- зарегистрировать роль и пространство на the Azure Data Lake Storage Gen2 (или иметь туда аккаунт)
Используя DataBricks CLI установите переменные:
-
databricks secrets create-scope --scope Analysts
-
databricks secrets put --scope Analysts --key SPID --string-value "Service Principal ID" (Application Client ID)
-
databricks secrets put --scope Analysts --key SPKey --string-value "Service Principal Secret Key"
-
databricks secrets put --scope Analysts --key DirectoryID --string-value "Azure Directory ID"
Далее по шагам:
- Смонтируйте
try:
dbutils.fs.unmount('/mnt/ecovacs')
except:
print()
try:
dbutils.fs.unmount('/mnt/transactions')
except:
print()
# сделайте настройки
client_id = dbutils.secrets.get(scope='Analysts', key='SPID')
client_secret = dbutils.secrets.get(scope='Analysts', key='SPKey')
directory_id = dbutils.secrets.get(scope='Analysts', key='DirectoryID')
# установите контейнер
account_name = 'storagejamesleslie'
container_name = 'ecovacs'
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': client_id,
'fs.azure.account.oauth2.client.secret': client_secret,
'fs.azure.account.oauth2.client.endpoint': f'https://login.microsoftonline.com/{directory_id}/oauth2/token'}
# сделайте монтирование
dbutils.fs.mount(
source = f'abfss://{container_name}@{account_name}.dfs.core.windows.net/',
mount_point = f'/mnt/{container_name}',
extra_configs = configs)
display(dbutils.fs.ls(f'/mnt/{container_name}'))