Хранилище озера данных Azure как ВНЕШНЯЯ ТАБЛИЦА в Databricks

Как я могу создать ВНЕШНЮЮ ТАБЛИЦУ в Azure Databricks, которая читает из Azure Data Lake Store? Мне трудно увидеть в документации, возможно ли это. У меня есть набор файлов CSV в определенной папке в хранилище озера данных Azure, и я хочу создать ВНЕШНЮЮ ТАБЛИЦУ в Azure Databricks, которая указывает на файлы CSV.


person datarocker    schedule 28.03.2018    source источник


Ответы (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"
person Hauke Mallow    schedule 10.05.2018
comment
есть решение без монтирования ADLS к dbfs? - person anurag; 27.06.2019
comment
Спасибо за информацию, я попытался сделать то же самое, используя ADLS gen2, используя основные учетные данные. но вроде работает только для ADLS 1-го поколения. stackoverflow.com/questions/56792095/ - person anurag; 27.06.2019
comment
Вы использовали что-то подобное для местоположения в ADLS Gen2: abfss: // ‹containername› @ ‹учетной записи хранения› .dfs.core.windows.net / dir / sampletable? - person Hauke Mallow; 27.06.2019
comment
да, то же самое было упомянуто в ссылке, которую я упомянул в вышеупомянутом комментарии. - person anurag; 27.06.2019

вам следует рассмотреть эту ссылку: 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 ")

Здесь не упоминается использование внешней таблицы.

person Adam Smith - Microsoft Azure    schedule 28.03.2018
comment
сначала посмотрите на вопрос! Этот метод размещен в тысячах блогов и форумов. - person anurag; 27.06.2019
comment
Не стесняйтесь внести свой вклад, добавив ответ на этот вопрос, если вышеперечисленное не подходит для вашего случая. Обратите внимание, что этому ответу больше года, и он может стать неактуальным. Цель stackoverflow - поделиться информацией и рекомендациями. Если у вас есть хорошее руководство или ответ, опубликуйте его, чтобы помочь другим. - person Adam Smith - Microsoft Azure; 28.06.2019