execução de consultas federadas no Google BigQuery
Este artigo descreve como configurar o Lakehouse Federation para executar consultas federadas nos dados do site BigQuery que não são gerenciados pelo site Databricks. Para saber mais sobre a lakehouse Federation, consulte O que é a lakehouse Federation?
Para se conectar ao banco de dados BigQuery usando a Lakehouse Federation, o senhor deve criar o seguinte no metastore Databricks Unity Catalog :
- Uma conexão com seu banco de dados BigQuery.
- Um catálogo externo que espelha seu banco de dados BigQuery no Unity Catalog para que você possa usar a sintaxe de consulta do Unity Catalog e as ferramentas de governança de dados para gerenciar o acesso do usuário do Databricks ao banco de dados.
Antes de começar
Requisitos do workspace:
- Espaço de trabalho preparado para o Catálogo do Unity.
Requisitos de computação:
- Conectividade de rede do seu Databricks Runtime clustering ou SQL warehouse para os sistemas de banco de dados de destino. Veja as recomendações do Networking para a Lakehouse Federation.
- Databricks O clustering deve usar Databricks Runtime 16.1 ou acima e o modo de acesso padrão ou dedicado (anteriormente compartilhado e de usuário único).
- SQL warehouses devem ser Pro ou Serverless.
Permissões necessárias:
- Para criar uma conexão, é preciso ser administrador de metastore ou usuário com o privilégio
CREATE CONNECTION
no metastore do Unity Catalog anexado ao espaço de trabalho. - Para criar um catálogo externo é preciso ter a permissão
CREATE CATALOG
no metastore e ser proprietário da conexão ou ter o privilégioCREATE FOREIGN CATALOG
na conexão.
Outros requisitos de permissão são definidos em cada seção baseada em tarefa a seguir.
Crie uma conexão
A conexão especifica um caminho e as credenciais para acessar um sistema de banco de dados externo. Para criar uma conexão, você pode usar o Catalog Explorer ou o comando CREATE CONNECTION
do SQL em um Notebook do Databricks ou no editor de consultas SQL do Databricks.
O senhor também pode usar a API REST da Databricks ou a CLI da Databricks para criar uma conexão. Veja POST /api/2.1/unity-catalog/connections e Unity Catalog comando.
Permissões necessárias: Administrador do Metastore ou usuário com o privilégio CREATE CONNECTION
.
- Catalog Explorer
- SQL
-
Em seu site Databricks workspace, clique em
Catalog .
-
Na parte superior do painel Catálogo , clique no ícone
Adicionar e selecione Adicionar uma conexão no menu.
Como alternativa, na página de acesso rápido , clique no botão Dados externos >, acesse a tab Conexões e clique em Criar conexão .
-
Na página Noções básicas de conexão do assistente de configuração de conexão , insira um nome de conexão fácil de usar.
-
Selecione um tipo de conexão do Google BigQuery e clique em Next (Avançar ).
-
Na página Authentication (Autenticação ), digite o serviço do Google account key JSONpara sua instância BigQuery.
Esse é um objeto JSON bruto usado para especificar o projeto BigQuery e fornecer autenticação. O senhor pode gerar esse objeto JSON e download a partir da página de detalhes do serviço account no Google Cloud em "key". O serviço account deve ter as permissões adequadas concedidas em BigQuery, incluindo BigQuery User e BigQuery Data Viewer . Veja a seguir um exemplo.
JSON{
"type": "service_account",
"project_id": "PROJECT_ID",
"private_key_id": "KEY_ID",
"private_key": "PRIVATE_KEY",
"client_email": "SERVICE_ACCOUNT_EMAIL",
"client_id": "CLIENT_ID",
"auth_uri": "https://accounts.google.com/o/oauth2/auth",
"token_uri": "https://accounts.google.com/o/oauth2/token",
"auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
"client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/SERVICE_ACCOUNT_EMAIL",
"universe_domain": "googleapis.com"
} -
(Opcional) Insira o ID do projeto para sua instância do BigQuery:
Esse é um nome para o projeto BigQuery usado para o faturamento de todas as consultas executadas sob essa conexão. padrão para o ID do projeto de seu serviço account. O serviço account deve ter as permissões adequadas concedidas para esse projeto em BigQuery, incluindo o usuárioBigQuery . dataset adicionais usados para armazenar tabelas temporárias por BigQuery podem ser criados neste projeto.
-
(Opcional) Adicione um comentário.
-
Clique em Criar conexão .
-
Na página Noções básicas do catálogo , insira um nome para o catálogo estrangeiro. Um catálogo externo espelha um banco de dados em um sistema de dados externo para que o senhor possa consultar e gerenciar o acesso aos dados desse banco de dados usando o Databricks e o Unity Catalog.
-
(Opcional) Clique em Testar conexão para confirmar se está funcionando.
-
Clique em Criar catálogo .
-
Na página Access (Acesso) , selecione o espaço de trabalho no qual os usuários podem acessar o catálogo que o senhor criou. O senhor pode selecionar All workspace have access (Todos os espaços de trabalho têm acesso ) ou clicar em Assign to workspace (Atribuir ao espaço de trabalho), selecionar o espaço de trabalho e clicar em Assign (Atribuir ).
-
Altere o proprietário que poderá gerenciar o acesso a todos os objetos no catálogo. começar a digitar um diretor na caixa de texto e, em seguida, clicar no diretor nos resultados retornados.
-
Conceda privilégios no catálogo. Clique em Conceder :
-
Especifique os diretores que terão acesso aos objetos no catálogo. começar a digitar um diretor na caixa de texto e, em seguida, clicar no diretor nos resultados retornados.
-
Selecione as predefinições de privilégios a serem concedidas a cada diretor. Todos os usuários de account recebem
BROWSE
por default.- Selecione Leitor de dados no menu suspenso para conceder privilégios
read
em objetos no catálogo. - Selecione Editor de dados no menu suspenso para conceder os privilégios
read
emodify
aos objetos no catálogo. - Selecione manualmente os privilégios a serem concedidos.
- Selecione Leitor de dados no menu suspenso para conceder privilégios
-
Clique em Conceder .
-
-
Clique em Avançar .
-
Na página Metadata (Metadados ), especifique as tags em key-value. Para obter mais informações, consulte Apply tags to Unity Catalog securable objects.
-
(Opcional) Adicione um comentário.
-
Clique em Salvar .
Execute o seguinte comando em um Notebook ou no editor de consultas Databricks SQL. Substitua <GoogleServiceAccountKeyJson>
por um objeto JSON bruto que especifica o projeto BigQuery e fornece autenticação. O senhor pode gerar esse objeto JSON e download a partir da página de detalhes do serviço account no Google Cloud em "key". O serviço account precisa ter as permissões adequadas concedidas em BigQuery, incluindo BigQuery User e BigQuery Data Viewer. Para ver um exemplo de objeto JSON, view o Catalog Explorer tab nesta página.
CREATE CONNECTION <connection-name> TYPE bigquery
OPTIONS (
GoogleServiceAccountKeyJson '<GoogleServiceAccountKeyJson>'
);
Recomendamos que o senhor use Databricks segredos em vez de texto simples strings para valores confidenciais, como credenciais. Por exemplo:
CREATE CONNECTION <connection-name> TYPE bigquery
OPTIONS (
GoogleServiceAccountKeyJson secret ('<secret-scope>','<secret-key-user>')
)
Para obter informações sobre a configuração de segredos, consulte Gerenciamento de segredos.
Crie um catálogo estrangeiro
Se o senhor usar a interface do usuário para criar uma conexão com a fonte de dados, a criação do catálogo externo estará incluída e o senhor poderá ignorar essa etapa.
Um catálogo externo espelha um banco de dados em um sistema de dados externo para que o senhor possa consultar e gerenciar o acesso aos dados desse banco de dados usando o Databricks e o Unity Catalog. Para criar um catálogo externo, use uma conexão com a fonte de dados que já foi definida.
Para criar um catálogo externo, o senhor pode usar o Catalog Explorer ou CREATE FOREIGN CATALOG
em um Notebook Databricks ou o editor de consultas Databricks SQL. O senhor também pode usar a API REST da Databricks ou a CLI da Databricks para criar um catálogo. Veja POST /api/2.1/unity-catalog/catalogs ou Unity Catalog comando.
Permissões necessárias: permissão CREATE CATALOG
na metastore e propriedade da conexão ou o privilégio CREATE FOREIGN CATALOG
na conexão.
- Catalog Explorer
- SQL
-
Em seu site Databricks workspace, clique em
Catalog para abrir o Catalog Explorer.
-
Na parte superior do painel Catálogo , clique no ícone
Adicionar e selecione Adicionar um catálogo no menu.
Como alternativa, na página de acesso rápido , clique no botão Catálogos e no botão Criar catálogo .
-
(Opcional) Insira a seguinte propriedade do catálogo:
ID do projeto de dados : Um nome para o projeto do BigQuery que contém dados que serão mapeados para esse catálogo. padrão para o ID do projeto de faturamento definido no nível da conexão.
-
Siga as instruções para criar catálogos estrangeiros em Criar catálogos.
Execute o seguinte comando SQL em um Notebook ou no editor Databricks SQL. Os itens entre colchetes são opcionais. Substitua os valores do espaço reservado.
<catalog-name>
: Nome para o catálogo no Databricks.<connection-name>
: O objeto de conexão que especifica a fonte de dados, o caminho e as credenciais de acesso.
CREATE FOREIGN CATALOG [IF NOT EXISTS] <catalog-name> USING CONNECTION <connection-name>;
Pushdowns suportados
Os seguintes pushdowns são suportados:
- Filtros
- Projeções
- Limite
- Funções: parciais, somente para expressões de filtro. (funções de cadeias de caracteres, funções matemáticas, funções de dados, tempo e registro de data e hora e outras funções diversas, como Alias, Cast, SortOrder)
- Agregados
- Classificação, quando usada com limite
- join (Databricks Runtime 16.1 ou acima)
Os seguintes pushdowns não são suportados:
- Funções do Windows
Mapeamentos de tipos de dados
A tabela a seguir mostra o mapeamento do tipo de dados do BigQuery para o Spark.
Tipo de BigQuery | Spark tipo |
---|---|
grande numérico, numérico | Tipo decimal |
int64 | Tipo longo |
float64 | Tipo duplo |
array, geography, interval, JSON, strings, struct | Tipo de gráfico VAR |
bytes | Tipo binário |
bool | Tipo booleano |
Data | Tipo de data |
data e hora, hora, carimbo de data/hora | Tipo de carimbo de data/tipo de carimbo de data/hora NTZ |
Quando o senhor lê em BigQuery, BigQuery Timestamp
é mapeado para Spark TimestampType
se preferTimestampNTZ = false
(default). BigQuery Timestamp
é mapeado para TimestampNTZType
se preferTimestampNTZ = true
.