Подключение в Google Cloud служба хранилища

В этой статье описывается настройка подключения из Azure Databricks для чтения и записи таблиц и данных, хранящихся в Google Cloud служба хранилища (GCS).

Для чтения или записи из контейнера GCS необходимо создать присоединенную учетную запись службы и связать ее с учетной записью службы. Вы подключаетесь к контейнеру непосредственно с ключом, создаваемым для учетной записи службы.

Доступ к контейнеру GCS напрямую с помощью ключа учетной записи облачной службы Google

Для чтения и записи непосредственно в контейнер необходимо настроить ключ, определенный в конфигурации Spark.

Шаг 1. Настройка учетной записи облачной службы Google с помощью Google Cloud Console

Необходимо создать учетную запись службы для кластера Azure Databricks. Databricks рекомендует предоставить этой учетной записи службы наименьшие привилегии, необходимые для выполнения задач.

  1. Щелкните IAM и Администратор в области навигации слева.

  2. Щелкните "Учетные записи службы".

  3. Нажмите кнопку " + СОЗДАТЬ УЧЕТНУЮ ЗАПИСЬ СЛУЖБЫ".

  4. Введите имя и описание учетной записи службы.

    Учетная запись службы Google Create для GCS

  5. Нажмите Создать.

  6. Щелкните CONTINUE (Продолжить).

  7. Нажмите кнопку "ГОТОВО".

Шаг 2. Создание ключа для доступа к контейнеру GCS напрямую

Предупреждение

Ключ JSON, создаваемый для учетной записи службы, является закрытым ключом, который должен предоставляться только авторизованным пользователям, так как он управляет доступом к наборам данных и ресурсам в учетной записи Google Cloud.

  1. В консоли Google Cloud в списке учетных записей служб щелкните только что созданную учетную запись.

  2. В разделе "Ключи" нажмите кнопку ADD KEY Create new key(Добавить ключ>).

    Google Create Key

  3. Примите тип ключа JSON .

  4. Нажмите Создать. Файл ключа скачан на компьютер.

Шаг 3. Настройка контейнера GCS

Создание контейнера

Если у вас еще нет контейнера, создайте его:

  1. Щелкните служба хранилища в области навигации слева.

  2. Нажмите кнопку CREATE BUCKET.

    Google Create Bucket

  3. Нажмите Создать.

Настройка контейнера

  1. Настройте сведения о контейнере.

  2. Выберите вкладку Разрешения .

  3. Рядом с меткой "Разрешения" нажмите кнопку "ДОБАВИТЬ".

    Сведения о контейнере Google

  4. Предоставьте служба хранилища Администратор разрешение учетной записи службы в контейнере из ролей облачной служба хранилища.

    Разрешения на сегмент Google

  5. Щелкните СОХРАНИТЬ.

Шаг 4. Поместите ключ учетной записи службы в секреты Databricks

Для хранения всех учетных данных Databricks рекомендует использовать области секретов. Вы можете поместить закрытый ключ и идентификатор закрытого ключа из файла JSON ключа в секрет Databricks область. Вы можете предоставить пользователям, субъектам-службам и группам в рабочей области доступ для чтения секретов область. Это защищает ключ учетной записи службы, позволяя пользователям получать доступ к GCS. Сведения о создании секрета область см. в разделе "Секреты".

Шаг 5. Настройка кластера Azure Databricks

  1. На вкладке "Конфигурация Spark" используйте следующий фрагмент кода, чтобы задать ключи, хранящиеся в секретных область:

    spark.hadoop.google.cloud.auth.service.account.enable true
    spark.hadoop.fs.gs.auth.service.account.email <client-email>
    spark.hadoop.fs.gs.project.id <project-id>
    spark.hadoop.fs.gs.auth.service.account.private.key {{secrets/scope/gsa_private_key}}
    spark.hadoop.fs.gs.auth.service.account.private.key.id {{secrets/scope/gsa_private_key_id}}
    

    <project-id> Замените <client-email>значения этих точных имен полей из файла JSON ключа.

Используйте управление доступом к кластеру и управление доступом к записной книжке вместе, чтобы защитить доступ к учетной записи службы и данным в контейнере GCS. Ознакомьтесь с разрешениями вычислений и совместной работой с помощью записных книжек Databricks.

Шаг 6. Чтение из GCS

Для чтения из контейнера GCS используйте команду чтения Spark в любом поддерживаемом формате, например:

df = spark.read.format("parquet").load("gs://<bucket-name>/<path>")

Чтобы записать в контейнер GCS, используйте команду записи Spark в любом поддерживаемом формате, например:

df.write.format("parquet").mode("<mode>").save("gs://<bucket-name>/<path>")

Замените <bucket-name> именем контейнера, созданного на шаге 3. Настройка контейнера GCS.

Примеры записных книжек

Чтение из записной книжки Google Cloud служба хранилища

Получить записную книжку

Запись в записную книжку Google Cloud служба хранилища

Получить записную книжку