Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Este artigo descreve como ler e gravar em tabelas do Google BigQuery no Azure Databricks.
Importante
A documentação da federação de consulta herdada foi desativada e pode não ser atualizada. As configurações mencionadas neste conteúdo não são oficialmente endossadas ou testadas pelo Databricks. Se Federação Lakehouse der suporte ao seu banco de dados de origem, Databricks recomenda usá-lo.
Você deve se conectar ao BigQuery usando a autenticação baseada em chave.
Permissões
Seus projetos devem ter permissões específicas do Google para ler e gravar usando o BigQuery.
Observação
Este artigo discute as visões materializadas do BigQuery. Para obter detalhes, consulte o artigo do Google Introdução a exibições materializadas. Para saber outra terminologia do BigQuery e o modelo de segurança do BigQuery, consulte a documentação do Google BigQuery.
Ler e gravar dados com o BigQuery depende de dois projetos do Google Cloud:
- Projeto (
project): A ID do projeto do Google Cloud do qual o Azure Databricks lê ou grava a tabela BigQuery. - Projeto pai (
parentProject): O ID do projeto pai, que é o ID do Projeto do Google Cloud a ser utilizado para cobrança de leitura e gravação. Defina isso como o projeto do Google Cloud associado à conta de serviço do Google para a qual você gerará chaves.
Você deve fornecer explicitamente os valores project e parentProject no código que acessa o BigQuery. Use um código semelhante ao seguinte:
spark.read.format("bigquery") \
.option("table", table) \
.option("project", <project-id>) \
.option("parentProject", <parent-project-id>) \
.load()
As permissões necessárias para os projetos do Google Cloud dependem se project e parentProject são as mesmas. As seções a seguir listam as permissões necessárias para cada cenário.
Permissões necessárias se project e parentProject se correspondem
Se os IDs de project e parentProject forem os mesmos, use a tabela a seguir para determinar as permissões mínimas.
| Tarefa do Azure Databricks | Permissões do Google necessárias no projeto |
|---|---|
| Ler uma tabela do BigQuery sem exibição materializada |
project No projeto:
|
| Ler uma tabela do BigQuery com exibição materializada |
project No projeto:
No projeto de materialização:
|
| Escrever uma tabela do BigQuery |
project No projeto:
|
Permissões necessárias se project e parentProject são diferentes
Se as IDs para o seu project e parentProject forem diferentes, use a tabela a seguir para determinar as permissões mínimas:
| Tarefa do Azure Databricks | Permissões do Google necessárias |
|---|---|
| Ler uma tabela do BigQuery sem exibição materializada |
parentProject No projeto:
project No projeto:
|
| Ler uma tabela do BigQuery com exibição materializada |
parentProject No projeto:
project No projeto:
No projeto de materialização:
|
| Escrever uma tabela do BigQuery |
parentProject No projeto:
project No projeto:
|
Etapa 1: Configurar o Google Cloud
Habilitar a API de Armazenamento do BigQuery
A API de Armazenamento do BigQuery é habilitada por padrão em novos projetos do Google Cloud nos quais o BigQuery está habilitado. No entanto, se você tiver um projeto existente e a API de Armazenamento do BigQuery não estiver habilitada, siga as etapas nesta seção para habilitá-lo.
Você pode habilitar a API de Armazenamento do BigQuery usando a CLI do Google Cloud ou o Console de Nuvem do Google.
Habilitar a API de Armazenamento do BigQuery usando a CLI do Google Cloud
gcloud services enable bigquerystorage.googleapis.com
Habilitar a API de Armazenamento do BigQuery usando o Console de Nuvem do Google
Clique em APIs & Serviços no painel de navegação esquerdo.
Clique no botão HABILITAR APIS E SERVIÇOS .
Digite
bigquery storage apina barra de pesquisa e selecione o primeiro resultado.
Verifique se a API de Armazenamento do BigQuery está habilitada.
Criar uma conta de serviço do Google para o Azure Databricks
Crie uma conta de serviço para o cluster do Azure Databricks. O Databricks recomenda dar a essa conta de serviço os privilégios mínimos necessários para executar suas tarefas. Consulte Funções e permissões do BigQuery.
Você pode criar uma conta de serviço usando a CLI do Google Cloud ou o Console do Google Cloud.
Criar uma conta de serviço do Google usando a CLI do Google Cloud
gcloud iam service-accounts create <service-account-name>
gcloud projects add-iam-policy-binding <project-name> \
--role roles/bigquery.user \
--member="serviceAccount:<service-account-name>@<project-name>.iam.gserviceaccount.com"
gcloud projects add-iam-policy-binding <project-name> \
--role roles/bigquery.dataEditor \
--member="serviceAccount:<service-account-name>@<project-name>.iam.gserviceaccount.com"
Crie as chaves para sua conta de serviço:
gcloud iam service-accounts keys create --iam-account \
"<service-account-name>@<project-name>.iam.gserviceaccount.com" \
<project-name>-xxxxxxxxxxx.json
Criar uma conta de serviço do Google usando o Google Cloud Console
Para criar a conta:
Clique em IAM e Administrador no painel de navegação esquerdo.
Clique em Contas de Serviço.
Clique em + CRIAR CONTA DE SERVIÇO.
Insira o nome e a descrição da conta de serviço.
Clique em CRIAR.
Especifique as funções para sua conta de serviço. Na lista suspensa Selecionar uma função, digite
BigQuerye adicione as seguintes funções:
Clique em CONTINUAR.
Clique em CONCLUÍDO.
Para criar chaves para sua conta de serviço:
Na lista de contas de serviço, clique em sua conta recém-criada.
Na seção Chaves, selecione ADICIONAR CHAVE > Criar novo botão de chave .
Aceite o tipo de chave JSON .
Clique em CRIAR. O arquivo de chave JSON é baixado em seu computador.
Importante
O arquivo de chave JSON gerado para a conta de serviço é uma chave privada que deve ser compartilhada somente com usuários autorizados, pois controla o acesso a conjuntos de dados e recursos em sua conta do Google Cloud.
Criar um bucket do GCS (Google Cloud Storage) para armazenamento temporário
Para gravar dados no BigQuery, a fonte de dados precisa de acesso a um bucket do GCS.
Clique em Armazenamento no painel de navegação esquerdo.
Clique em CRIAR BUCKET.
Configure os detalhes do bucket.
Clique em CRIAR.
Clique na guia Permissões e Adicionar membros.
Forneça as permissões a seguir para a conta de serviço no bucket.
Clique em SALVAR.
Etapa 2: Configurar o Azure Databricks
Para configurar um cluster para acessar tabelas do BigQuery, você deve fornecer seu arquivo de chave JSON como uma configuração do Spark. Use uma ferramenta local para codificar o arquivo de chave JSON em Base64. Para fins de segurança, não use uma ferramenta remota ou baseada na Web que possa acessar suas chaves.
Quando você configura seu cluster:
Na guia Configuração do Spark , adicione a seguinte configuração do Spark. Substitua <base64-keys> pela cadeia de caracteres do arquivo de chave JSON codificado em Base64. Substitua os outros itens entre colchetes (como <client-email>) pelos valores desses campos do arquivo de chave JSON.
credentials <base64-keys>
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 <private-key>
spark.hadoop.fs.gs.auth.service.account.private.key.id <private-key-id>
Ler e gravar em uma tabela do BigQuery
Para ler uma tabela do BigQuery, especifique
df = spark.read.format("bigquery") \
.option("table",<table-name>) \
.option("project", <project-id>) \
.option("parentProject", <parent-project-id>) \
.load()
Para gravar em uma tabela do BigQuery, especifique
df.write.format("bigquery") \
.mode("<mode>") \
.option("temporaryGcsBucket", "<bucket-name>") \
.option("table", <table-name>) \
.option("project", <project-id>) \
.option("parentProject", <parent-project-id>) \
.save()
onde <bucket-name> é o nome do bucket que você criou em Criar um bucket do Google Cloud Storage (GCS) para armazenamento temporário. Consulte Permissões para saber mais sobre requisitos <project-id> e <parent-id> valores.
Criar uma tabela externa do BigQuery
Importante
Esse recurso não tem suporte do Catálogo do Unity.
Você pode declarar uma tabela não gerenciada no Databricks que lerá dados diretamente do BigQuery:
CREATE TABLE chosen_dataset.test_table
USING bigquery
OPTIONS (
parentProject 'gcp-parent-project-id',
project 'gcp-project-id',
temporaryGcsBucket 'some-gcp-bucket',
materializationDataset 'some-bigquery-dataset',
table 'some-bigquery-dataset.table-to-copy'
)
Exemplo de notebook python: carregar uma tabela do Google BigQuery em um DataFrame
O notebook Python a seguir carrega uma tabela do Google BigQuery em um DataFrame do Azure Databricks.
Bloco de anotações de exemplo do Google BigQuery Python
Exemplo de notebook Scala: carregar uma tabela do Google BigQuery em um DataFrame
O notebook Scala a seguir carrega uma tabela do Google BigQuery em um DataFrame do Azure Databricks.