Tabelas externas
Aplica-se a: SQL do Databricks Runtime do Databricks
O Catálogo do Unity e o metastore Hive do Azure Databricks incorporado usam locais padrões para tabelas gerenciadas. O Catálogo do Unity apresenta vários novos objetos protegíveis para conceder privilégios aos dados no armazenamento de objetos na nuvem.
-
Um objeto do Catálogo do Unity usado para compilar credenciais de longo prazo de provedores de armazenamento em nuvem.
-
Um objeto do Catálogo do Unity usado para associar um URI de armazenamento de objeto de nuvem a uma credencial de armazenamento.
-
Uma tabela do Catálogo do Unity criada em um local externo gerenciado pelo Catálogo do Unity.
Tabela externa
Uma tabela externa é uma tabela que faz referência a um caminho de armazenamento externo usando uma cláusula LOCATION
.
O caminho de armazenamento deve estar contido em um local externo existente ao qual você tenha recebido acesso.
Como alternativa, você pode fazer referência a uma credencial de armazenamento à qual você tenha concedido acesso.
O uso de tabelas externas abstrai o caminho de armazenamento, o local externo e a credencial de armazenamento para usuários que recebem acesso à tabela externa.
Aviso
Se um esquema (banco de dados) for registrado no metastore do Hive no nível do workspace, o descarte desse esquema usando a opção CASCADE
fará com que todos os arquivos nesse local de esquema sejam excluídos recursivamente, independentemente do tipo de tabela (gerenciada ou externa).
Se o esquema estiver registrado em um metastore do Catálogo do Unity, os arquivos das tabelas gerenciadas do Catálogo do Unity serão excluídos recursivamente. No entanto, os arquivos de tabelas externas não serão excluídos. Você deve gerenciar esses arquivos usando diretamente o provedor de armazenamento em nuvem.
Portanto, para evitar a perda acidental de dados, você nunca deve registrar um esquema em um metastore do Hive em um local em que já haja dados. Você também não deve criar novas tabelas externas em um local gerenciado por esquemas de metastore do Hive nem que contenha tabelas gerenciadas do Catálogo do Unity.
Representação gráfica de relacionamentos
O diagrama a seguir mostra o relacionamento entre:
- credenciais de armazenamento
- locais externos
- tabelas externas
- caminhos de armazenamento
- entidades IAM
- contas de serviço do Azure
Exemplos
-- `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