Tablas externas

Se aplica a:check marked yes Databricks SQL check marked yes Databricks Runtime

Unity Catalog y el metastore de Hive de Azure Databricks integrado usan ubicaciones predeterminadas para las tablas administradas. Unity Catalog presenta varios nuevos objetos protegibles para conceder privilegios a los datos en el almacenamiento de objetos en la nube.

Tabla externa

Una tabla externa es una tabla que hace referencia a una ruta de acceso de almacenamiento externa mediante una cláusula LOCATION.

La ruta de acceso de almacenamiento debe estar contenida en una ubicación externa existente a la que se le haya concedido acceso.

También puede hacer referencia a una credencial de almacenamiento a la que se le ha concedido acceso.

El uso de tablas externas abstrae la ruta de acceso de almacenamiento, la ubicación externa y las credenciales de almacenamiento para los usuarios a los que se les concede acceso a la tabla externa.

Advertencia

Si un esquema (base de datos) está registrado en el metastore de Hive de nivel de área de trabajo, quitar ese esquema con la opción CASCADE hace que todos los archivos de esa ubicación de esquema se eliminen de forma recursiva, independientemente del tipo de tabla (administrada o externa).

Si el esquema se registra en un metastore de catálogos de Unity, los archivos de las tablas administradas por el catálogo de Unity se eliminan de forma recursiva. Sin embargo, los archivos de las tablas externas no se eliminan. Debe administrar esos archivos mediante el proveedor de almacenamiento en la nube directamente.

Por lo tanto, para evitar la pérdida accidental de datos, nunca debe registrar un esquema de un metastore de Hive en una ubicación con datos existentes. Tampoco debe crear nuevas tablas externas en una ubicación administrada por esquemas de metastore de Hive o que contenga tablas administradas por el catálogo de Unity.

Representación gráfica de relaciones

En el diagrama siguiente se describe la relación entre:

  • credenciales de almacenamiento
  • ubicaciones externas
  • tablas externas
  • rutas de acceso de almacenamiento
  • entidades IAM
  • cuentas de servicio de Azure

External location ER diagram

Ejemplos

-- `finance` can create an external table over specific object within the `finance_loc` location
> CREATE TABLE sec_filings LOCATION 'abfss://container@storageaccount.dfs.core.windows.net/depts/finance/sec_filings';

-- Create or replace an external table from a query
> CREATE OR REPLACE TABLE sec_filings
  LOCATION 'abfss://container@storageaccount.dfs.core.windows.net/depts/finance/sec_filings'
  AS (SELECT * FROM current_filings);

-- Cannot list files under an external table without permissions on it
> LIST `abfss://container@storageaccount.dfs.core.windows.net/depts/finance/sec_filings`
  Error
> LIST `abfss://container@storageaccount.dfs.core.windows.net/depts/finance/sec_filings/_delta_log`
  Error

-- Grant access to sec_filings to all employees
> GRANT SELECT ON TABLE sec_filings TO employee;

-- Any member of the `employee` group can securely read sec_filings
> SELECT count(1) FROM sec_filings;
 20

-- Any member of the `employee` group can list files under the sec_filings table
> LIST `abfss://container@storageaccount.dfs.core.windows.net/depts/finance/sec_filings`
  _delta_log
> LIST `abfss://container@storageaccount.dfs.core.windows.net/depts/finance/sec_filings/_delta_log`
  00000.json