Как создать базу данных блоков данных с доступом только для чтения поверх существующей базы данных - PullRequest
0 голосов
/ 10 апреля 2020

Я буду использовать это изображение для визуализации своего вопроса: enter image description here

Databricks1 создает базу данных (и таблицы) в Databricks и сохраняет свои данные в учетной записи хранения. В Databricks2 я хочу прочитать данные: Databricks2 имеет только права на чтение. Я могу читать непосредственно по необработанным дельта-файлам, но я хотел бы создать базу данных и таблицу, которые также визуализируются в интерфейсе Databricks. Я думал, что это будет работать следующим образом:

CREATE DATABASE IF NOT EXISTS datastore_panels
LOCATION '/mnt/readOnlyTraining/tmp/panels/'; 

Но это дает ошибку разрешения, хотя база данных tmp / Panel уже существует.

Есть ли способ создать базу данных / таблицу из существующих ресурсов поверх дельты с доступом только для чтения?

1 Ответ

0 голосов
/ 15 апреля 2020

Я нашел решение. Я потратил довольно много времени на это, и я никогда не сталкивался с кем-то с таким же вопросом.

Решение на самом деле простое, но вы должны знать. У меня есть Сервисный Принципал с доступом для чтения к моей учетной записи хранения.

Создайте базу данных следующим образом (не указывайте местоположение):

CREATE DATABASE IF NOT EXISTS datastore_panels

Создайте таблицу (используйте местоположение, но не устанавливайте свойства таблиц или разбиение: они будут считываться из метаданных дельта-таблицы):

CREATE TABLE IF NOT EXISTS datastore_panels.customer_data
USING delta
LOCATION '/mnt/readOnlyTraining/delta/customer-data/'

Для тех, кто хочет лучше понять вопрос, это то, что я пробовал раньше

   %sql
CREATE TABLE IF NOT EXISTS datastore_panels.production_bazeilles_press_shopfloor (
      reg_id INT,
      year INT,
      timestamp_utc TIMESTAMP,
      unit STRING,
      value DECIMAL (18,8),
      descr_total STRING,
      descr01 STRING,
      descr02 STRING,
      descr03 STRING,
      descr04 STRING,
      descr05 STRING,
      descr06 STRING,
      descr07 STRING,
      descr08 STRING,
      descr09 STRING,
      descr10 STRING
)
USING delta
PARTITIONED BY (year)
LOCATION '/mnt/blob/panels/production/bazeilles/press/shopfloor'
TBLPROPERTIES ('delta.deletedFileRetentionDuration' = "interval 60 days",
              'delta.autoOptimize.optimizeWrite' = 'true'
)

Это не работает, потому что в конце концов spark будет только читать, но из-за указанных столбцов tblproperties и partitionedby spark должны регистрироваться в учетной записи хранения только с правами чтения, которые кто-то пытается изменить эти свойства. Этот шаг регистрации невозможен, поэтому он возвращает ошибку «нет разрешения».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...