Как я могу создать ВНЕШНЮЮ ТАБЛИЦУ в Azure Databricks, которая читает из Azure Data Lake Store? Мне трудно увидеть в документации, возможно ли это. У меня есть набор файлов CSV в определенной папке в хранилище озера данных Azure, и я хочу создать ВНЕШНЮЮ ТАБЛИЦУ в Azure Databricks, которая указывает на файлы CSV.
Хранилище озера данных Azure как ВНЕШНЯЯ ТАБЛИЦА в Databricks
Ответы (2)
1. Ссылка на смонтированные каталоги
Вы можете подключить Azure Data Lake Store (ADLS) к DBFS Azure Databricks (требуется среда выполнения 4.0 или выше):
# Get Azure Data Lake Store credentials from the secret store
clientid = dbutils.preview.secret.get(scope = "adls", key = "clientid")
credential = dbutils.preview.secret.get(scope = "adls", key = "credential")
refreshurl = dbutils.preview.secret.get(scope = "adls", key = "refreshurl")
accounturl = dbutils.preview.secret.get(scope = "adls", key = "accounturl")
# Mount the ADLS
configs = {"dfs.adls.oauth2.access.token.provider.type": "ClientCredential",
"dfs.adls.oauth2.client.id": clientid,
"dfs.adls.oauth2.credential": credential,
"dfs.adls.oauth2.refresh.url": refreshurl}
dbutils.fs.mount(
source = accounturl,
mount_point = "/mnt/adls",
extra_configs = configs)
Создание таблиц работает так же, как и в DBFS. Просто укажите на точку монтирования каталог в ADLS, например. грамм.:
%sql
CREATE TABLE product
USING CSV
OPTIONS (header "true", inferSchema "true")
LOCATION "/mnt/adls/productscsv/"
Предложение location автоматически подразумевает EXTERNAL. См. Также документацию по Azure Databricks.
2. Ссылка на хранилище озера данных в определении таблицы напрямую.
Вы также можете напрямую ссылаться на хранилище, не монтируя хранилище. Этот сценарий имеет смысл, если метаданные или части кода также используются на других платформах. В этом сценарии доступ к хранилищу должен быть определен на уровне кластера или записной книжки (см. Документация по Databricks для ADLS Gen1 или эта документация для получения сведений о конфигурации Gen2) или Сквозная передача учетных данных Azure AD используется. Определение таблицы для ADLS Gen1 будет выглядеть так:
CREATE TABLE sampletable
(L_ORDERKEY BIGINT,
L_PARTKEY BIGINT,
L_SUPPKEY BIGINT,
L_SHIPMODE STRING,
L_COMMENT STRING)
USING csv
OPTIONS ('DELIMITER' '|')
LOCATION "adl://<your adls>.azuredatalakestore.net/directory1/sampletable"
;
Для Azure Data Lake Gen2 ссылка на расположение выглядит так:
LOCATION "abfss://<file_system>@<account_name.dfs.core.windows.net/directory/tablename"
вам следует рассмотреть эту ссылку: https://docs.azuredatabricks.net/spark/latest/data-sources/azure/azure-datalake.html
Доступ к Azure Data Lake Store с помощью Spark API. Чтобы читать данные из своей учетной записи Data Lake Store, вы можете настроить Spark для использования учетных данных службы с помощью следующего фрагмента в записной книжке:
spark.conf.set ("dfs.adls.oauth2.access.token.provider.type", "ClientCredential") spark.conf.set ("dfs.adls.oauth2.client.id", "{ИДЕНТИФИКАТОР КЛИЕНТА ВАШЕЙ УСЛУГИ } ") spark.conf.set (" dfs.adls.oauth2.credential "," {ВАШИ УЧЕТНЫЕ ДАННЫЕ} ") spark.conf.set (" dfs.adls.oauth2.refresh.url "," https://login.microsoftonline.com/ {ИДЕНТИФИКАТОР ВАШЕГО КАТАЛОГА} / oauth2 / token ")
Здесь не упоминается использование внешней таблицы.